Haskell补零程序

该程序将 n 个零添加到列表 x 示例中

填充零 "100" 1 "0100" 填充零 "10" 4 "000010"

我的代码:

fillZeros :: (Eq a, Num a) => [Char] -> a -> [Char] 
fillzeros x 0 = x 
fillzeros (x:xs) a  = (0:fillzeros (x:xs) a-1)

类型签名中缺少变量“fillZeros”的绑定,每次重新加载时都会出现此错误:r

回答

您遇到的第一个问题是您为函数指定了签名(使用大写),但您的实现是针对函数(使用小写)。fillZerosZfillzerosz

此外,使用没有任何意义(0: fillzeros (x:xs) a-1):这被解析为(0: (fillzeros (x:xs) a) - 1),因此您从递归调用中减去一个,而且0不是 a,Char因此您不能在您的函数中使用它。

为了模式匹配,最好用 匹配x,否则fillzeros "" 15会报错,因为空字符串与 不匹配(x:xs)

因此,您可以通过以下方式实现:

fillzeros :: (Eq a, Num a) => [Char] -> a -> [Char] 
fillzeros x 0 = x 
fillzeros x a  = ('0' : fillzeros x (a-1))


以上是Haskell补零程序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>