Глава 12 Расширения языка
16 Синтаксис, используемый только в расширениях
(Введены в OCaml 4.02.2, расширены в 4.03)
Некоторые синтаксические конструкции принимаются при разборе, но отклоняются при проверке типов. Поэтому эти синтаксические конструкции напрямую нельзя использовать в обычном OCaml. Однако, переписыватели -ppx и другие внешние инструменты могут использовать эту мягкость парсера для расширения языка, переписывая эти новые синтаксические конструкции в обычные конструкции.
16.1 Операторы расширений
(Введены в OCaml 4.02.2, расширены до унарных операторов в OCaml 4.12.0)
|
Существуют два класса операторов, доступных для расширений: инфиксные операторы с именем, начинающимся с символа # и содержащим более одного символа #, и унарные операторы с именем (начинающимся с символов ?, ~ или !), содержащим по крайней мере один символ #.
Например:
# let infix x y = x##y;; Error: ## is not a valid value identifier.
# let prefix x = !#x;; Error: !# is not a valid value identifier.
Обратите внимание, что как ##, так и !# должны быть удалены переписывателем ppx, чтобы этот пример стал корректным.
16.2 Литералы расширений
(Введены в OCaml 4.03)
|
Целые и вещественные литералы, за которыми следует однобуквенный идентификатор в диапазоне [g..z∣G..Z] являются литералами, используемыми только в расширениях.
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/extensionsyntax.html