?[1..]
auf dem Bildschirm ausgegeben werden.
Jedoch würde die Ausgabe theoretisch uendlich lange dauern und wird deshalb vorzeitig unterbrochen.
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,{Interrupted}
head [n..] = n take n [1..] = [1..n] [m..]!!n = m + n
[square x | x <- [1..], odd x]
{x² x ∈ {0,1,2,3,...}; x² <10}
?[square x | x<-[0..], square x<10] [0,1,2,4,9
0,1,4,9,⊥
filter (<10) (map square [0..])
filter
durch die Funktion takeWhile
ersetzt, erhält man bei der Auswertung
innerhalb einer Session das erwartete Ergebnis.
? takeWhile (<10) (map square [0..]) [0,1,4,9]
primes
mit folgender Signatur:
primes :: [Int]
primes = sieve [2..] sieve = x : sieve [y |y <- xs , y mod x > 0]
primes
delegiert das Herausfiltern der nicht-primen natürlichen Zahlen an die Funktion sieve
weiter, welche
welche mit Hilfe der bekannten List Comprehensions jedes Element y
der Liste auf ganzahlige Teilbarkeit mit x testet und als Ergebnis
eine Liste mit allen Primzahlen zurückgeliefert.