intsfrom a == a : intsfrom (a + 1) first n [] == [] first 0 x == [] first n (a : b) == a : first (n - 1) b notdiv n == { x -> x % n != 0 } filter f [] == [] filter f (a : b) == a : x <| f a |> x where { x == filter f b } era (a : b) == a : era (filter (notdiv a) b) primes == era (intsfrom 2)