首页 > 解决方案 > Haskell - 定义函数所需的 Num Char 实例

问题描述

我想用 3 个输入参数和 1 个输出参数编写一个简单的递归函数:

getLengthOfNumber :: (String, Int, Int) -> Int
getLengthOfNumber (n, i, res)
    | isCharDigit(n!!i+1) = getLengthOfNumber (n, i+1, res+1)
    | otherwise = res

为什么 Hugs 会向我抛出错误“定义 getLengthOfNumber 所需的 Num Char 实例”?

标签: haskell

解决方案


!!具有比 更高的优先级+,因此n!!i+1被解析为(n !! i) + 1,它试图将 1 添加到字符串的元素中,这仅适用Char于数字。你应该改写n !! (i+1).


推荐阅读