Trong Core, List.find
được định nghĩa sử dụng một chức năng phụ trợ như sau:Trong OCaml, tại sao có chức năng phụ trợ trong List.find của Core?
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
Nhưng nó có thể được định nghĩa trực tiếp. Ví dụ:
let rec find l ~f =
match l with
| [] -> None
| hd :: tl -> if f hd then Some hd else find tl f
Có lợi thế nào khi sử dụng chức năng phụ trợ để xác định chức năng như List.find
?
Trong Haskell các cơ hội nội tuyến bổ sung mà bạn nhận được bằng cách thực hiện loại điều này là một việc lớn. Tôi không biết liệu OCaml có giống nhau hay không. Cụm từ tìm kiếm: chuyển đổi đối số tĩnh, chuyển đổi công nhân-wrapper –