这是我作业中的一个问题,因此很可能会受到赞赏。
这个学期我正在学习Haskell,我的第一个作业要求我编写一个函数,该函数输入 2 个字符串 (string1
和 string2
) 并返回一个由第一个字符串的(重复的)字符组成的字符串,string1
直到一个与创建的长度相同的字符串string2
。
我只被允许使用Prelude功能length
。
例如:将 asstring1
"Key"
和我的名字"Ahmed"
作为string2
函数应该返回"KeyKe"
。
这是我到目前为止所得到的:
makeString :: Int -> [a] -> [a]
makeString val (x:xs)
| val > 0 = x : makeString (val-1) xs
| otherwise = x:xs
我没有直接给它两个字符串,而是给它一个整数值(因为我可以稍后用它代替长度),但这给了我一个运行时错误:
*Main> makeString 8 "ahmed"
"ahmed*** Exception: FirstScript.hs: (21,1)-(23,21) : Non-exhaustive patterns in function makeString
我认为这可能与我的列表用完并变成一个空列表(?)有关。
一点帮助将不胜感激。