我想在 Haskell 中编写一个汉明函数,将列表作为输入。我已经有了这个:
merge :: [Integer] -> [Integer] -> [Integer]
merge (x:xs)(y:ys)
| x == y = x : merge xs ys
| x < y = x : merge xs (y:ys)
| otherwise = y : merge (x:xs) ys
hamming :: [Integer]
hamming
= 1 : merge (map (2*) hamming) (merge (map (3*) hamming) (map (5*) hamming))
那很简单。但现在我想要像“hamming [4,6,7,9]”这样的输入。实际输入是 1,但现在输入应该是一个列表,并且列表中的每个数字都在汉明列表中。当然 2x 3x 和 5x 在列表中。
我写了类似的东西
"hamming (x:xs) = x : merge (map (2*) hamming) (merge (map (3*) hamming) (map (5*) hamming))"
只是为了测试一个列表,但它不起作用。