Spec-Zone.ru › OCaml 5.0

12.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/5.0/htmlman/generativefunctors.html

Spec-Zone.ru

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