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

Ali*_*air 4 string haskell

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

b2d :: Int -> String

b2d 1 = "1"
b2d x = show (x `mod` 2) ++ b2d  x/2
Run Code Online (Sandbox Code Playgroud)

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

:3 - Instance of fractional [Char] required for definition of b2d
Run Code Online (Sandbox Code Playgroud)

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

干杯.

new*_*cct 9

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

b2d (x/2)
Run Code Online (Sandbox Code Playgroud)

你的第一个案例也可能不应该是2个论点


Nef*_*byr 6

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

b2d x = show (x `mod` 2) ++ b2d (x `div` 2)
Run Code Online (Sandbox Code Playgroud)

要获得额外的效率点,请使用divMod仅执行一个部门:

b2d x = let (q,r) = x `divMod` 2
        in show r ++ b2d q
Run Code Online (Sandbox Code Playgroud)