0

我正在尝试使用sortByand来订购一个列表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)
4

1 回答 1

4

你想要的功能是Data.Ord.comparing.

Prelude> :t Data.Ord.comparing
Data.Ord.comparing :: Ord a => (b -> a) -> b -> b -> Ordering
于 2012-05-01T19:49:10.623 回答