按函数结果对Haskell中的列表进行排序

时间:2012-05-01 19:40:52

标签: haskell

我正在尝试使用sortBycompare订购列表,但我遇到了比较表达式的问题。我需要它根据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)

1 个答案:

答案 0 :(得分:4)

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

Prelude> :t Data.Ord.comparing
Data.Ord.comparing :: Ord a => (b -> a) -> b -> b -> Ordering