[1,2,3] map (+1) [0,2..] let sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0] in sieve [2..] let sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0] in sieve [2..] !! 10 let sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0] in sieve [2..] !! 1000