-- some functions generating infinite lists: -- the list of natural numbers: from n = n : from (n+1) -- Fibonacci numbers: fibs = fibgen 1 1 fibgen n1 n2 = n1 : fibgen n2 (n1+n2) goal1 = take 10 fibs -- the list of primes generated by the -- Sieve of Erathostenes: primes = sieve (from 2) sieve (x:xs) = x : sieve (filter (\y -> y `mod` x > 0) xs) goal2 = take 5 primes -- Hamming numbers: ordMerge (x:xs) (y:ys) | x==y = x:ordMerge xs ys | xy = y:ordMerge (x:xs) ys hamming = 1:ordMerge (map (*2) hamming) (ordMerge (map (*3) hamming) (map (*5) hamming)) goal3 = take 10 hamming