mit Lambda anstelle von Let-In-Schema

7

In SICP 1.2.1 gibt es eine Funktion, die eine rationale Zahl wie folgt erzeugt:

%Vor%

Ich bin nur neugierig, wie Sie das Gleiche mit Lambda statt Let implementieren können, ohne GCD zweimal aufzurufen. Ich konnte es selbst nicht herausfinden.

    
CamelCamelCamel 25.05.2010, 16:39
quelle

4 Antworten

13

Betrachten Sie SICP Abschnitt 1.3.2 ,

%Vor%

entspricht

%Vor%

Also Ihre Vorgehensweise,

%Vor%

sollte äquivalent zu

sein %Vor%     
Bill the Lizard 25.05.2010, 16:55
quelle
10

Diese beiden Dinge sind gleich:

%Vor%

und

%Vor%     
Amadan 25.05.2010 16:45
quelle
1
%Vor%     
paul 22.02.2011 15:49
quelle
1

Lassen Sie uns zwei einfache Fälle untersuchen, damit wir verstehen können, wie wir jede Funktion, die let mit Lambda verwendet, umschreiben können:

  1. In unserem ersten Fall haben wir einen vermietet. Diese Funktion ist sehr einfach, sie gibt eine gegebene Eingabe zurück, indem 10 hinzugefügt wird:

    %Vor%

Nun lassen Sie uns dies zu einem Ausdruck machen, der lambda verwendet:

%Vor%

Wie Sie sehen, gibt test-lambda eine Lambda-Auswertung zurück, die mit dem Wert 10 ausgewertet wird. Wenn wir das testen, können wir sagen:

%Vor%

welches 20 zurückgibt.

  1. Jetzt für mehr als ein Let schachteln wir Lambda-Ausdrücke in Lambda-Ausdrücke.

In unserem Fall haben wir zwei Aussagen:

%Vor%

Wir können das mit Lambda so schreiben:

%Vor%

Wir untersuchen nun jeden der Lambda-Ausdrücke, die ihnen einen Wert geben, und der innerste Lambda-Ausdruck kümmert sich darum, was wir berechnen wollen, indem wir die Variablennamen verwenden, die jedem Lambda-Ausdruck zugewiesen wurden.

Ich hoffe, das war klar und könnte anderen helfen, klarer zu sehen!

    
Arash Saidi 03.06.2013 19:24
quelle

Tags und Links