podstawowymi, List.find
określa się za pomocą funkcji pomocniczej, w następujący sposób:W OCaml, dlaczego istnieje funkcja pomocnicza na liście Core.find?
let find l ~f =
let rec find_aux = function
| [] -> None
| hd :: tl -> if f hd then Some hd else find_aux tl
in
find_aux l
Ale może być określona bezpośrednie. Na przykład:
let rec find l ~f =
match l with
| [] -> None
| hd :: tl -> if f hd then Some hd else find tl f
Czy jest jakaś zaleta w użyciu funkcję pomocniczą dla definiowania funkcji, takiej jak List.find
?
W Haskell dodatkowe możliwości, które można uzyskać, robiąc takie rzeczy, to wielka sprawa. Nie wiem, czy OCaml jest taki sam. Hasła wyszukiwania: statyczna transformacja argumentów, transformacja pracownik-opakowanie –