Lazy Evaluation (Beispiel)

Sieb des Eratosthenes: berechnet die unendliche Liste aller Primzahlen, durch wiederholtes Filtern aus der unendlichen Liste [2..]

primes :: [ Integer ]
primes = sieve [ 2 .. ]
sieve :: [ Integer ] -> [ Integer ]
sieve (x : ys) = 
  x : sieve 
       ( filter ( \ y -> 0 < y `mod` x ) ys )
lazy evaluation ist softwaretechnisch sinnvoll, denn damit kann man Erzeugung von Verarbeitung von Daten trennen.

Vgl. XML-Parser, die Teildokumente erst bei Bedarf lesen/verarbeiten.



Johannes Waldmann 2006-02-02