我正在编写一个名为 printField 的函数。这个函数接受 anint
和 astring
作为参数,然后打印一个像这样的字段"Derp..."
:printField 7 "Derp"
。当字段由数字组成时,输出应为“...3456”。
我写的函数是这样的:
printField :: Int -> String -> String
printField x y = if isDigit y
then concat(replicate n ".") ++ y
else y ++ concat(replicate n ".")
where n = x - length y
这显然是行不通的。我从 GHC 得到的错误是:
Couldn't match type `[Char]' with `Char'
Expected type: Char
Actual type: String
In the first argument of `isDigit', namely `y'
In the expression: isDigit y
In the expression:
if isDigit y then
concat (replicate n ".") ++ y
else
y ++ concat (replicate n ".")
我无法让它工作:(。任何人都可以帮助我吗?请记住,我是 Haskell 和函数式编程的新手。