2つのリストを取ります。最初は文字のリスト、2番目は正の整数。この関数は、最初のリスト内の文字を、2番目のリスト内の同じ位置番号の回数だけ繰り返します。例:2つのリスト、2番目の正の整数、2番目のリストのそれぞれの数字で最初のリスト文字を繰り返します。
myCount ['a','b'] ['1','2'] => ['a','b','b']
私がこれまで持っているもの:
myCount :: [Char] -> [Int] -> [Char]
myCount [] [] = []
myCount (x:xs) (y:ys) = replicate y x && myCount xs ys
は、私が最初のリスト(x)はyの回から文字を複製して、再帰的にリスト全体のためにこれをやっています。 正しい方向のヘルプやポインターがあれば大丈夫です!
私のエラーは、次のとおりです。
mess.hs:10:43: error:
* Couldn't match expected type `Bool' with actual type `[Char]'
* In the second argument of `(&&)', namely `myCount xs ys'
In the expression: replicate y x && myCount xs ys
In an equation for `myCount':
myCount (x : xs) (y : ys) = replicate y x && myCount xs ys
としてこれを定義することができますどのようにこのために、 '&&'使用してのアイデアを思い付いたのですか?それは_logicalとoperator_です。 – leftaroundabout
@leftaroundaboutは、リストが空になるまで関数を呼び出そうとしていましたが、前に使っていた別の関数でそれを使っていました。しかし、それは私の問題であるようです。 – Demostroyer
ハスケルでは、 "_X_まで関数を呼び出す"ことは実際にはあまり意味がありません。あなたは誰が誰に電話をかけたかを考えませんが、どのように結果を見なければならないのでしょうか。 – leftaroundabout