Labels
Использование именованных аргументов (labeled arguments) зачастую предпочтительнее, если ваша функция принимает три и более параметра.
Пример
В стандартной библиотеке для некоторых модулей существуют модули-двойники, использующие подход именованных аргументов.
ocaml
(* Bytes.sub *)
val sub : bytes -> int -> int -> bytes
(* BytesLabels.sub *)
val sub : bytes -> pos:int -> len:int -> bytes
Преимущества:
- Больше информации в сигнатуре
- Более гибкая возможность композиции функций