Gepostet: |
Lambda-Ausdrücke | ||||||||||
hi, wie kann ich Lambda-Ausdrücke auswerten wie z.B. (\y -> x 2) (\x -> x *4)?? Soll 8 rauskommen!! Frage: Wie fange ich da an, also mit der linken oder rechten Term? Gibt da Regeln? Und wie werden die ausgewertet? LG Anand |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, dein Beispiel ist kein gültiger Haskell-Ausdruck. Vermutlich meinst du (\y -> y 2) (\x -> x *4). Die Auswertung erfolgt dann nach folgendem Prinzip: Ganz links steht die Funktion, rechts die Argumente für die Funktion. Dann wird die Funktion gleichzeitig auf alle Argumente angewendet. Beispiel (\x y z -> x + y*z) 1 2 3 = 1 + 2*3. Die Argumente können natürlich auch wieder Funktionen sein! Falls also weitere Lambda-Ausdrücke in der Formel sind, nach dem gleichen Prinzip weitermachen. Wichtig ist noch, daß die Funktionsanwendung am stärksten bindet, also zuerst ausgewertet werden muß. Z.B.: 1 * (\x y -> x+y) 2 3 * 4 = 1 * (2+3) * 4 Für deinen Ausdruck sieht das dann so aus:
Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Vielen Dank für die schnelle Antwort Siracusa :). | |||||||||||
Zum Seitenanfang | |||||||||||