Abstract

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