在haskell和函数声明中打印的问题

时间:2016-09-08 14:46:39

标签: haskell

这是我的代码:

sumDig i = if (i == 0) then 0 else ((mod i 10) + somaDig ((i-(mod i 10)/10)))


main = do
    print (sumDig 4)

它没有工作,我不知道为什么......它没有编译,编译器消息没有帮助

该函数只是对给定数字的所有字符求和,例如:123 = 1 + 2 + 3 = 6,它使用n mod 10 + n / 10递归

1 个答案:

答案 0 :(得分:1)

你有一些错误。

可以通过向sumDig

添加类型注释来修复有关模糊类型的错误
sumDig :: Int -> Int

另一个错误是somaDig未定义。您的意思是键入sumDig吗?

如果是这样,那么最后一个编译错误就是在整数上使用/。您可能需要div代替:

sumDig :: Int -> Int
sumDig i = if (i == 0) then 0 else ((mod i 10) + sumDig (((i-(mod i 10)) `div` 10)))