Anwendungsbeispiele
Nutzbarkeit von "lazy evaluation"
Sinnvoll beim Aufbau komplexer, abstrakter Strukturen, von
denen nur Teile ausgewertet werden m�ssen
Beispiel Simulation/KI
Beispiel Szenengraph
Beispiel XML
Notwendigkeit von strikter Auswertung
Praxisbeispiel aus der "Haskell Mailing List"
Thread "seq / strictness and laziness" - šbersetzte Ausz�ge
Ein Programmierer berichtet:
Ein Programmst�ck, dass mehrere Dateien einliest und verarbeitet,
ben÷tigt zu viel Arbeitsspeicher
Es exisitiert eine Methode, die eine Datei einliest und ein intern definiertes Konstrukt zur�ckliefert
Der Entwickler hat erkannt, dass das Problem in der nicht-strikten Auswertung liegt :
Es werden zun„chst alle Dateien eingelesen, bevor der Ergebnisausdruck tats„chlich ausgewertet wird
Der Versuch, den R�ckgabeausdruck mit dem seq-Befehl strikt auszuwerten, bringt keine Ver„nderung
Antwort einer Entwicklerin:
seq wertet nur die erste Ebene eines Arguments aus
Handelt es sich dabei im einen strukturierten Typ, so wertet seq
diesen nicht tief genug aus
Der Programmierer des Parsers m�sste eine eigene Routine f�r seinen ben÷tigten Typ
entwerfen, die alle Ebenen auswertet
Zum Beispiel m�sste f�r eine Liste jedes Element dieser Liste ausgewertet werden
|