我希望有一个函数,可以从给定的成绩列表中计算平均分。这是我目前编写的代码:
getAverageRate :: [Int]->Int
getAverageRate marks = (fromIntegral (foldr (+) 0 marks))/(fromIntegral (length marks))
我尝试使用'foldr'获取列表中所有分数的总和,然后除以'length marks'。尽管我已经使用了'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
,您正在费力地将这些Int
转换为的类型是...Int
! - Daniel Wagner