2017-05-30 18 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)) 

、次のエラーが生成されます。それは[INT]であった場合

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

同様のコードがうまく働いた - > INT、なぜ私はそれがこのように動作しないのか分かりません。

+0

関数はうまく見えますが、間違って使用しているようですが、次回は関数の使用方法も入れてみましょう –

+0

メイン>ビン1001 – Aeglen

+0

あなたはそのヒントを与えたいと思います) –

答えて

1

実際に[Char]と思われる場合は、タイプが正しくない、つまりInt1001)の関数を使用しています。 bin ['1','0','0','1']

+0

または 'bin" 1001 "'。 – Davislor

関連する問題