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 в этом случае.

Источник.

Пример
ocaml
let f = fun x y -> x + y
(* = *)
let f = function x -> function y -> x + y