定义所需的小数[Char]实例?

时间:2009-09-23 04:29:19

标签: string haskell

这是一个简单的代码,用于取十进制数并返回表示二进制等效值的字符串。

b2d :: Int -> String

b2d 1 = "1"
b2d x = show (x `mod` 2) ++ b2d  x/2

但是,当我尝试通过拥抱来运行时,它会给我一个错误:

:3 - Instance of fractional [Char] required for definition of b2d

我不知道这意味着什么。谁能告诉我如何解决它?

干杯。

2 个答案:

答案 0 :(得分:9)

你可能想要(函数调用的优先级高于运算符):

b2d (x/2)

你的第一个案例也许不应该是2个参数

答案 1 :(得分:6)

/是分数除法运算符。对于整数,您需要使用div(并添加括号作为提到的newacct):

b2d x = show (x `mod` 2) ++ b2d (x `div` 2)

要获得额外的效率点,请使用divMod仅执行一次除法:

b2d x = let (q,r) = x `divMod` 2
        in show r ++ b2d q