Мат. часть
Расширяемые варианты
Расширяемые типы вариантов - это типы вариантов, которые могут быть расширены новыми конструкторами вариантов.
Тип исключений (exn
) это как раз и есть пример расширяемых вариантов. Как и алгебраические эффекты.
Конструкции fun
и function
Конструкция function
является базовой конструкцией, так как эта обычная функция от одного аргумента. А вот конструкцию fun
можно назвать сокращением для определения каррированой функции.
История
В Caml Light (предшественнике OCaml) ключевое слово fun
могло принимать как несколько шаблонов (как function
), так и несколько аргументов (как fun
), но это вносило двусмысленность, которая требовала вставки круглых скобок вокруг некоторых шаблонов.
Поскольку эта проблема с лишними скобками была немного хлопотной, возможно, было решено не разрешать использование нескольких шаблонов в конструкции fun
, а вместо этого вернуться к fun
+ match
в этом случае.
Пример
let f = fun x y -> x + y
(* = *)
let f = function x -> function y -> x + y