Haskell“未解决的重载”

时间:2017-05-30 12:13:42

标签: haskell

以下代码枚举“向后二进制”

bin :: [Char] -> Int
bin a = temp (a, 1)
    where
        temp :: ([Char], Int) -> Int
        temp ([], n) = 0
        temp (('1':x), n) = temp(x, (n*2)) + 1*n
        temp (('0':x), n) = temp(x, (n*2))

产生以下错误:

 TYPE - Unresolved Overloading
 *** Type       : Num [Char] => Int
 *** Expression : Bin 1001

类似的代码工作正常[Int] - > Int,我不知道为什么它不能这样工作。

1 个答案:

答案 0 :(得分:1)

您使用的函数类型不正确,Int1001)当它真正显示[Char]时,例如bin ['1','0','0','1']