printFieldという関数を書いています。この関数は、int
とstring
を引数として取り、次のようなフィールドを次のように出力します"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と関数型プログラミング全般に不慣れであることを覚えておいてください.