Inhalt

Funktionale Programmierung mit Haskell - "Lazy Evaluation"


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


  • zurück Seitenanfang InhaltInhalt