Num x < Haskell < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:46 Do 12.07.2012 | Autor: | Infoandi |
Aufgabe | Ein Term repräsentiert entweder die Addition zweier Terme oder die Multiplikation zweier Terme oder eine ganze Zahl.
Geb Sie eine Haskell-Funktion eval an, die für einen gegebenen Term dessen repräsentierten Wert berechnet. Die berechnete ganze Zahl soll dabei als Term zurückgegeben werden. |
Hallo,
die Lösung schaut wiefolgt aus:
eval :: Term -> Term
ecal t = Num (eval1 t)
eval1 :: Term -> Int
eval1 (Add t1 t2) = (eval1 t1) + (eval1 t2)
eval1 (Mult t1 t2) = (eval1 t1) * (eval1 t2)
eval1 (Num x) = x
Nu würde mich interessieren, wie eval1 genau funktioniert. Wenn wir z.B den Term 3+4*2 eingeben. Splittet er das dann auf ? in t1 = 3 und t2 = 3*4 und schickt beides nochmal in die Funktion um 3*4 noch aufzu splitten ? Was macht eval1 (Num x) = x ? Wird das erst aktiv wenn wir t1 mit t1 = 3 rein schicken und was macht er dann mit der 3 ?
Fragen über Fragen und alles so umgangssprachlich ausgedrückt, ich hoffe mir kann trotzdem jmd helfen.
Grüße andi
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:51 Sa 14.07.2012 | Autor: | j3ssi |
Wenn du eval aufrufst tust du es ja nicht mit $3*4+2$ sondern in dem Fall mit: eval add( mult( 3 4) 2 )
Der ghci interpretiert diesesn Ausdruck nach in mehreren Schritten zu $3*4+2$.
|
|
|
|