有人可以解释为什么我不能平均使用这种格式
main = do
let x = [1,2,3,4]
print(sum x/length x)
我这样做会出现此错误
No instance for (Fractional Int) arising from a use of ‘/’
In the first argument of ‘print’, namely ‘(sum x / length x)’
In a stmt of a 'do' block: print (sum x / length x)
答案 0 :(得分:2)
除法运算符/
仅适用于小数(这是编译器在错误消息中告诉您的内容)。
如果要使用整数除法,请使用div
函数:
print ( sum x `div` length x )
但是,当然,你的平均值也是整数,因此不准确。
如果您想使用小数,则需要先使用sum x
将length x
和fromIntegral
转换为小数类型,然后除以:
print ( fromIntegral (sum x) / fromIntegral (length x) )