我正在尝试使用sortBy
和compare
订购列表,但我遇到了比较表达式的问题。我需要它根据filmRating函数给出的平均值对列表进行排序。
formattedByYear :: Int -> String
formattedByYear year = concatMap formatString $ sortBy (compare filmRating) $ filmsByYear year
filmRating :: Film -> Float
filmRating (Film _ _ _ ratings)
| ratings == [] = 0.0
| otherwise = average (map snd ratings)
答案 0 :(得分:4)
您想要的功能是Data.Ord.comparing
。
Prelude> :t Data.Ord.comparing
Data.Ord.comparing :: Ord a => (b -> a) -> b -> b -> Ordering