www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Anand

Gepostet:
30.10.2008 22:07

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    
 
Siracusa

Gepostet:
31.10.2008 03:24

   
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:

(\y -> y 2) (\x -> x*4)
= (\x -> x*4) 2 -- für y wird (\x -> x*4) eingesetzt
= 2*4 -- für x wird 2 eingesetzt
= 8



Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Anand

Gepostet:
31.10.2008 22:34

   
Vielen Dank für die schnelle Antwort Siracusa :).
Zum Seitenanfang