scala - 有没有等效于 Scala 的 Iterable.maxBy 的 Haskell?

标签 scala haskell

斯卡拉的IterablemaxBy :

Finds the first element which yields the largest value measured by function f.


def maxBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A

例子:
scala> Seq(-2, 1).maxBy(Math.abs)
res0: Int = -2

scala> Seq(-2, 3).maxBy(Math.abs)
res1: Int = 3

等效的 Haskell 方法是什么?

最佳答案

斯卡拉的Iterable与 Haskell 的 Traversable 相关.但是,在这种情况下,Foldable足以找到给定集合的最大值,所以使用 maximumBy from Data.Foldable 结合 compare `on` f ( on 来自 Data.Function )或 comparing f (comparing 来自 Data.Ord):

import Data.Foldable (maximumBy, Foldable)
import Data.Ord      (comparing)

maxBy :: (Foldable t, Ord a) => (b -> a) -> t b -> b
maxBy = maximumBy . comparing

关于scala - 有没有等效于 Scala 的 Iterable.maxBy 的 Haskell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236258/

相关文章:

scala - 在 Scala 中创建 self 类型的实例

scala - 给定 A::B::C 和 (A, B, C) => D,如何写 A::B::C => D?

scala - 如何在 spark sql(Scala) 中解析 url

haskell - GHC拒绝导出合格组件

haskell - 修复 ghc-pkg 检查指出的问题

haskell - 数据映射 : how do I tell if I "need value-strict maps"?

python - 什么是可以用高阶函数棘手的列表推导来完成的事情的可靠示例?

scala - 为什么编译器不会因 Spark 列表达式不是 BooleanType 而引发错误?

haskell - 在Haskell中实现语言解释器

json - Scala 创建多行 JSON 字符串