これは私の宿題からの質問なので、ヒントをいただければ幸いです。
私は今学期にHaskellstring1
を学んでおり、最初の課題では、2 つの文字列 (と ) を入力 し、同じ長さの文字列が作成されるまで、string2
最初の文字列の (繰り返される) 文字で構成される文字列を返す関数を作成する必要があります。string1
string2
プレリュード機能しか使えないlength
。
例: asstring1
"Key"
と my name"Ahmed"
をstring2
関数が返す必要があるものとして取り"KeyKe"
ます。
これが私がこれまでに得たものです:
makeString :: Int -> [a] -> [a]
makeString val (x:xs)
| val > 0 = x : makeString (val-1) xs
| otherwise = x:xs
2 つの文字列を直接指定する代わりに、整数値を指定しています (後で長さを代入できるため) が、これにより実行時エラーが発生します。
*Main> makeString 8 "ahmed"
"ahmed*** Exception: FirstScript.hs: (21,1)-(23,21) : Non-exhaustive patterns in function makeString
リストがなくなって空のリスト(?)になる何かがあるのではないかと思います。
少し助けていただければ幸いです。