Spec-Zone.ru › OCaml 4.14

10.15 Генеративные функторы

(Введено в OCaml 4.02)

module-expr ::= ...
∣ functor () -> module-expr
∣ module-expr ()
definition ::= ...
∣ module module-name { ( module-name : module-type ) ∣ () } [ : module-type ] = module-expr
module-type ::= ...
∣ functor () -> module-type
specification ::= ...
∣ module module-name { ( module-name : module-type ) ∣ () } : module-type

Генеративный функтор принимает аргумент единицы (). Для его использования необходимо обязательно применить его к этому аргументу единицы, гарантируя, что все компоненты типов в результате работы функтора ведут себя генеративным образом, т.е. они отличаются от типов, полученных при других применениях того же самого функтора. Это эквивалентно принятию аргумента с сигнатурой sig end и всегда применению к struct end, но не к какому-либо определённому модулю (в последнем случае, двойное применение к одному и тому же модулю вернёт идентичные типы).

Как побочный эффект этой генеративности, разрешается распаковывать модули первого класса в теле генеративных функторов.

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/generativefunctors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API