Das einzige, was Sie von einer nil
-Darstellung brauchen, ist, sie identifizieren zu können - schreiben Sie ein null?
-Prädikat, das für alle anderen Paare "wahr" für nil
und "falsch" zurückgibt. Dies bedeutet, dass die Antwort von Ihrer Darstellung von wahr / falsch abhängt. Mit der allgemeinen Wahl von λxy.x
und λxy.y
ist eine bequeme Kodierung für nil
λf.[true]
. Das Übersetzen zu SKI ist jetzt sehr einfach (und ich werde es hier nicht machen, da es wie Hausaufgaben aussieht ...).
(Auch das Implementieren eines null?
-Prädikats mit dieser Repräsentation für nil
ist eine gute Übung.)
Tags und Links lambda functional-programming lambda-calculus lisp