Funktionale Programmiersprachen mit lazy evaluation implementieren den
Call by Name Lambda-Kalkül. Sinnvolle Implementierungen funktionaler
Programmiersprachen mit lazy evaluation umgehen die mit Call by Name verbundene
wiederholte Auswertung des selben Parameters, die ja immer den selben Wert als Resultat
hat, dadurch, dass sie bei der ersten Auswertung den Wert des Funktionsarguments speichern
und später statt einer erneuten Auswertung lediglich auf diesen gespeicherten Wert
zurückgreifen. Dieses Verfahren trägt den Namen Call by Need.
In meinem Aufsatz zeige ich, auf welche Weise Call by Need mit Hilfe von
Lambda-Termen dargstellt werden kann und welche Reduktionsregeln im Gegensatz zu
Call by Name und Call by Value zum Einsatz kommen.
Schließlich päsentiere ich eine mögliche (von Friedman und Wise 1976 vorgestellte)
Implementierung von Call by Need, die das lazy Verhalten bereits auf
Sourcecode-Ebene charakterisiert.
Available resources