F#库是否具有`argMax`的标准函数?

Ale*_*lex 5 f# argmax

我是F#的新手,并编写了一些简单的算法来习惯这种语言,这需要argMax.标准库是否具有搜索最大化函数的列表元素的功能?也就是说,如果现有函数的行为与此类似:

let argMax f xs =
  let rec go a fa zs =
    match zs with
      | [] -> a
      | z :: zs' ->
        let fz = f z
        if fz > fa
        then go z fz zs'
        else go a fa zs'
  match xs with
    | []       -> invalidArg "xs" "empty"
    | x :: xs' -> go x (f x) xs'
Run Code Online (Sandbox Code Playgroud)

Gus*_*Gus 9

是的,但它被称为List.maxBy.

这是一个例子:

let f x = -(x * x) + 100 * x + 1000
List.maxBy f [0..1000]
// val it : int = 50

f 50
// val it : int = 3500
Run Code Online (Sandbox Code Playgroud)

还有List.minBy和相同的功能可用于SeqArray.