Haskell 没有因使用';而产生的(RealFrac Int)实例';

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

下面的程序应该检查输入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 (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来自链接文档,“整数除法被截断为负无穷大”