【发布时间】:2014-02-26 09:13:20
【问题描述】:
我想要一个从给定的分数列表中计算平均分数的函数。这是我到目前为止所做的:
getAverageRate :: [Int]->Int
getAverageRate marks = (fromIntegral (foldr (+) 0 marks))/(fromIntegral (length marks))
我要做的是通过使用“foldr”获取列表中所有标记的总和,然后除以“长度标记”。尽管我已经使用了“fromIntegral”,但这个错误仍然出现,我找不到问题。
No instance for (Fractional Int) arising from a use of `/'
Possible fix: add an instance declaration for (Fractional Int)
In the expression:
(fromIntegral (foldr (+) 0 marks)) / (fromIntegral (length marks))
In an equation for `getAverageRate':
getAverageRate marks
= (fromIntegral (foldr (+) 0 marks))
/ (fromIntegral (length marks))
【问题讨论】:
-
通过调用
fromIntegral,您要求将Int转换为其他类型。但是通过将函数的返回类型限制为Int,您煞费苦心地将那些Ints 转换为的类型是...Int!