Vorlesung: Praxis der Funktionalen Programmierung | Index

Bemerkungen zum Auswertungszeitpunkt

Wann binden wir Variablen?
by value
sofort auswerten, dann Wert in die Umgebung schreiben Vorteil: leicht zu implementieren, Nachteil: eventuell zu strikt (Auswertung zu früh).
by name
Quelltext (Syntaxbaum) in die Umgebung schreiben, und bei jeder Benutzung auswerten. Vorteil: referentielle Transparenz (= Lambda-Kalkül). Nachteil: sehr ineffizient bei mehrfacher Auswertung
lazy
bei Definition den Quelltext merken (wie by-name), und nach erster Benutzung durch den Wert ersetzen (ab dann wie by-value). Vorteil: wie by-name, Nachteil: etwas Verwaltungsaufwand (thunks, die bei Auswertung zu überschreiben sind).
Fortran, C usw. sind by-value, Algol68 ist strenggenommen by-name, und Haskell ist lazy.

best viewed with any browser


http://www.informatik.uni-leipzig.de/~joe/ mailto:joe@informatik.uni-leipzig.de