有没有更好的方法,

时间:2014-08-24 05:29:26

标签: haskell monads

maximum' :: [Writer [Int] Int] -> Writer [Int] Int
maximum' xs = writer (maximumBy (comparing fst) (map runWriter xs))

如果我使用序列,那么所有的成绩单将合并到我不想要的最大成绩单中,如果我使用runWriter但是有没有办法在没有它的情况下完成它? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式简化代码,而不是显式构建编写器结果和重构所选编写器:

maximum' :: [Writer [Int] Int] -> Writer [Int] Int
maximum' = maximumBy (comparing $ fst . runWriter)