Anwendungsbeispiele
Nutzbarkeit von "lazy evaluation"
Sinnvoll beim Aufbau komplexer, abstrakter Strukturen, von
denen nur Teile ausgewertet werden mssen
Beispiel Simulation/KI
Beispiel Szenengraph
Beispiel XML
Notwendigkeit von strikter Auswertung
Praxisbeispiel aus der "Haskell Mailing List"
Thread "seq / strictness and laziness" - šbersetzte Auszge
Ein Programmierer berichtet:
Ein Programmstck, dass mehrere Dateien einliest und verarbeitet,
ben÷tigt zu viel Arbeitsspeicher
Es exisitiert eine Methode, die eine Datei einliest und ein intern definiertes Konstrukt zurckliefert
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 Rckgabeausdruck 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 msste eine eigene Routine fr seinen ben÷tigten Typ
entwerfen, die alle Ebenen auswertet
Zum Beispiel msste fr eine Liste jedes Element dieser Liste ausgewertet werden
|