Ich bin neu in F # und schreibe einen einfachen Algorithmus, um mich an die Sprache zu gewöhnen, die argMax
benötigt. Verfügt die Standardbibliothek über eine Funktion, um nach einem Listenelement zu suchen, das eine Funktion maximiert? Das heißt, wenn es eine vorhandene Funktion, die wie dieses Verhalten:Hat die F # -Bibliothek eine Standardfunktion für `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'