Haskell平均编码方法

时间:2018-01-10 17:36:05

标签: haskell

有人可以解释为什么我不能平均使用这种格式

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)

1 个答案:

答案 0 :(得分:2)

除法运算符/仅适用于小数(这是编译器在错误消息中告诉您的内容)。

如果要使用整数除法,请使用div函数:

print ( sum x `div` length x )

但是,当然,你的平均值也是整数,因此不准确。

如果您想使用小数,则需要先使用sum xlength xfromIntegral转换为小数类型,然后除以:

print ( fromIntegral (sum x) / fromIntegral (length x) )