Глава 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-2026 INRIA.
https://ocaml.org/manual/5.5/extensionsyntax.html