double x = x + x -- double (1 + 2) --> (1 + 2) + (1 + 2) --> 3 + (1 + 2) --> 3 + 3 --> 6 -- Merge (infinite!) lists of increasing numbers in an ordered way: ordMerge (x:xs) (y:ys) | x == y = x : ordMerge xs ys | x < y = x : ordMerge xs (y:ys) | x > y = y : ordMerge (x:xs) ys ordMerge3 xs ys zs = ordMerge xs (ordMerge ys zs) hamming = 1 : ordMerge3 (map (*2) hamming) (map (*3) hamming) (map (*5) hamming) nats = 0 : map (+1) nats