2016-04-03 6 views
0

Ich versuche zu verstehen, warum dieser bestimmte Schema-Code den Wert 36 zurückgibt. Ich verstehe nicht genau, wie die Variablen binden.Was gibt der folgende Code in Schema zurück

Wenn jemand eine umfassende Durchquerung dieses Codes bieten könnte, wäre es sehr hilfreich in meinen Studien. Vielen Dank.

Antwort

3

Verwenden Sie das Substitutionsprinzip, um den Code auszuwerten. Ihr Code schön, wie Sie hilfreich getan haben eingekerbt zu haben ist, weil man leicht in (lambda (x) (* x 3)) in die lambdas

(((lambda (fn) (lambda(x) (fn (fn x)))) (lambda (x) (* x 3))) 4) 

Zuerst gesteckt werden ersetzen nun die Ausdrücke sehen können wir für fn

((lambda(x) ((lambda (x) (* x 3)) ((lambda (x) (* x 3)) x))) 4) 

werden wir Ersatz in 4 für die äußerste x

((lambda (x) (* x 3)) ((lambda (x) (* x 3)) 4)) 

Jetzt ersetzen wir in 4 in für x auf der rechten Seite Lambda

((lambda (x) (* x 3)) (* 4 3)) 

(* 4 3)

((lambda (x) (* x 3)) 12) 

Ersatz 12 auswerten für x

(* 12 3) 

Bewerten

36