Haskell“未解决的重载”
下面的代码用于向后枚举二进制文件Haskell“未解决的重载”,haskell,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 - Unres
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时运行良好,我不知道为什么它不能以这种方式工作 您使用的函数类型不正确,即Int 1001,但它实际使用[Char],例如bin['1'、'0'、'0'、'1']。函数看起来不错,但似乎使用错误,下次尝试将函数的用法设置为oops,这将是Main>bin 1001无需担心,只是想给你这个提示,让你能更快地找到帮助;或1001号垃圾箱。