hamming :: [Int]
hamming = 1 : map (2*) hamming & map (3*) hamming & map (5*) hamming
 where
  (x:xs) & (y:ys)
    | x == y = x : xs & ys
    | x <  y = x : xs & (y:ys)
    | x >  y = y : (x:xs) & ys

