haskell memo
h = 1:map (2*) h # map (3*) h # map(5*) h where xxs@(x:xs) # yys@(y:ys) | x==y =x:(xs#ys) | x<y =x:(xs#yys) | x>y =y:(xxs#ys) prime = let p (x:xs) =x:(p (filter ((/=0).(flip rem x)) xs)) in p [2..] fib = 0:1:[i+j|(i,j)<-zip fib $tail fib]