入力としてリストを取得するハスケルのハミング関数を書いてみたいと思います。私はすでにこれを持っています: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))
これは簡単でした。しかし、今私は入力としてハミング[4,6,7,9]のようなものが欲しいです。実際の入力は1ですが、入力はリストでなければならず、リストにあるすべての数字はハミングリストにあります。もちろん、2x 3xと5xがリストに含まれています。
私はちょうどリストをテストするために
"hamming (x:xs) = x : merge (map (2*) hamming) (merge (map (3*) hamming) (map (5*) hamming))"
のようなものを書いたが、それは動作しません。
'map(3 *)hamming'とは何でしょうか?関数(?!)の*要素*に3を掛けたいとしますか? –