ones = 1 : ones 

lotsa x = x : (lotsa x)

silly i = (i+1) : (silly i)

kernel n =  n : (kernel (n+1))

natural = kernel 0

square x = x * x

iif True x y = x
iif False x y = y

select pred [] = []
select pred (x:xs) = iif (pred x) (x : (select pred xs)) (select pred xs)

odd x = (mod x 2) == 1

remove pred ls = select (Main.negate pred) ls

negate pred = \x -> not (pred x)

even = Main.negate Main.odd

multiple p q = (mod q p) == 0

primes = primeskernel (kernel 2)
primeskernel (p:xs) = p : (primeskernel (remove (multiple p) xs))



