Skip to content

Мат. часть

Расширяемые варианты

Расширяемые типы вариантов - это типы вариантов, которые могут быть расширены новыми конструкторами вариантов.

https://ocaml.org/manual/5.2/extensiblevariants.html

Тип исключений (exn) это как раз и есть пример расширяемых вариантов. Как и алгебраические эффекты.

Конструкции fun и function

Конструкция function является базовой конструкцией, так как эта обычная функция от одно аргумента. А вот конструкция fun можно назвать сокращением для определения каррированой функции.

История

В Caml Light (предшественнике OCaml) ключевое слово fun могло принимать как несколько шаблонов (как function), так и несколько аргументов (как fun), но это вносило двусмысленность, которая требовала вставки круглых скобок вокруг некоторых шаблонов.

Поскольку эта проблема с лишними скобками была немного хлопотной, возможно, было решено не разрешать использование нескольких шаблонов в конструкции fun, а вместо этого вернуться к fun + match в этом случае.

Источник.