Haskell 没有因使用';而产生的(RealFrac Int)实例';
下面的程序应该检查输入n是否可以被n中的数字之和整除Haskell 没有因使用';而产生的(RealFrac Int)实例';,haskell,types,functional-programming,Haskell,Types,Functional Programming,下面的程序应该检查输入n是否可以被n中的数字之和整除 module Harshad where isHarshad :: Int -> Bool isHarshad n = (mod n (sumDig n)) == 0) where sumDig n | (floor (n / 10) == 0) = n -- n consists of only one digit | otherwise = sumDig (floor (n / 10)) + floor (1
module Harshad where
isHarshad :: Int -> Bool
isHarshad n = (mod n (sumDig n)) == 0)
where
sumDig n
| (floor (n / 10) == 0) = n -- n consists of only one digit
| otherwise = sumDig (floor (n / 10)) + floor (10*(n - floor (n / 10)))
我得到以下编译错误:
*没有因使用“sumDig”而产生的(RealFrac Int)实例
即使在尝试添加各种转换后,我仍然被卡住。完全放弃分馏,只用于整数除法:
sumDig n = if n < 10 then n -- n consists of only one digit
else sumDig (n `div` 10) + (n `mod` 10)
sumDig n=如果n<10,则n--n仅由一个数字组成
else sumDig(n`div`10)+(n`mod`10)
将分数全部删除,仅用于整数除法:
sumDig n = if n < 10 then n -- n consists of only one digit
else sumDig (n `div` 10) + (n `mod` 10)
sumDig n=如果n<10,则n--n仅由一个数字组成
else sumDig(n`div`10)+(n`mod`10)
sumDig应该是什么类型的?Int我应该是什么类型的sumDig
应该是什么类型的?Int我应该是这个div
功能,它是floor
,floor
还是round
?如何改变这种行为?@SimonBaars从链接文档中,“整数除法向负无穷大截断”这个div
函数,它是floor
,floor
还是round
?如何改变这种行为?@SimonBaars来自链接文档,“整数除法被截断为负无穷大”