私には機能がありますappendLetters :: [[Char]] -> [[Char]]
。この関数をiterate
次のように呼び出そうとするとiterate appendLetters [""]
、 ghci から次の ように通知されます。
Couldn't match type '[Char]' with 'Char'
Expected type: [Char] -> [Char]
Actual type: [[Char]] -> [[Char]]
In the first argument of 'iterate', namely 'appendLetters'
In the second argument of 'genericTake', namely
'(iterate appendLetters [""])'
In the expression: genericTake n (iterate appendLetters [""])
Couldn't match expected type 'Char' with actual type `[Char]'
In the expression: ""
In the second argument of 'iterate', namely '[""]'
In the second argument of 'genericTake', namely
'(iterate appendLetters [""])'
失敗しました。モジュールがロードされました: なし。
iterate
がこれらの引数の型を持つことを期待するのはなぜですか? どうすればそれを機能させることができますか?
前もって感謝します。
編集:完全なコード:
wordsOfLength :: [Char] -> Integer -> [[Char]]
wordsOfLength alphabet n = genericTake n ( iterate appendLetters [""] ) where appendLetters words = [ atFirst ++ [letter] | atFirst <- words , letter <- alphabet ]
説明: wordsOfLength はアルファベットを取り、このアルファベットで長さ n のすべての単語を作成する必要があります。これは宿題であり、タスク自体を解決するのではなく、繰り返し機能についてのみ助けてもらいたいです。