2017-05-30 38 views
0

下面的代码来枚举 “向后二进制”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] - >内部,我不知道为什么它不以这种方式工作。

+0

功能看起来不错,但看起来你用错了,下次尝试把功能的用法也太 –

+0

哎呀,那就是Main> Bin 1001 – Aeglen

+0

不用担心,只是想给你提示,所以你可以更快地找到帮助;) –

回答

1

您正在使用的功能类型不正确,即Int1001),如果它真的是[Char],例如, bin ['1','0','0','1']

+0

或'bin“1001”'。 – Davislor