(Alle) Primzahlen in Haskell

Das Sieb des Eratosthenes als unendliche rekursive Definition:

primes = sieve [2..]
sieve (p:as) = p : sieve (filter (\x -> x `mod` p /= 0) as)