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.
http://www.informatik.uni-leipzig.de/~joe/
mailto:joe@informatik.uni-leipzig.de