Глава 11 Язык OCaml
3 Имена
Идентификаторы используются для присвоения имён нескольким классам языковых объектов и последующей ссылки на эти объекты по имени:
- имена значений (синтаксический класс value-name),
- конструкторы значений и конструкторы исключений (класс constr-name),
- метки (label-name, определены в разделе 11.1),
- теги полиморфных вариантов (tag-name),
- конструкторы типов (typeconstr-name),
- поля записей (field-name),
- имена классов (class-name),
- имена методов (method-name),
- имена переменных экземпляра (inst-var-name),
- имена модулей (module-name),
- имена типов модулей (modtype-name).
Эти одиннадцать пространств имён различаются как по контексту, так и по регистру идентификатора: первая буква идентификатора может быть строчной (ниже обозначается как lowercase-ident) или прописной (ниже обозначается как capitalized-ident). Для этой цели подчёркивание считается строчной буквой.
Именование объектов
|
См. также следующее расширение языка: расширенные операторы индексирования.
Как показано выше, префиксные и инфиксные символы, а также некоторые ключевые слова можно использовать в качестве имён значений, если заключить их в круглые скобки. Правила регистра сведены в таблицу ниже.
| Пространство имён | Регистр первой буквы |
| Значения | строчная буква |
| Конструкторы | прописная буква |
| Метки | строчная буква |
| Теги полиморфных вариантов | прописная буква |
| Исключения | прописная буква |
| Конструкторы типов | строчная буква |
| Поля записей | строчная буква |
| Классы | строчная буква |
| Переменные экземпляра | строчная буква |
| Методы | строчная буква |
| Модули | прописная буква |
| Типы модулей | любой |
Примечание о тегах полиморфных вариантов: текущая реализация допускает строчные теги вариантов наряду с тегами, начинающимися с прописной буквы, однако для обеспечения переносимости и совместимости с будущими версиями OCaml мы рекомендуем избегать строчных тегов вариантов.
Ссылки на именованные объекты
|
Ссылка на именованный объект может задаваться либо его именем (согласно обычным правилам статической области видимости имён), либо путём доступа prefix . name, где prefix обозначает модуль, а name — имя объекта, определённого в этом модуле. Первый компонент пути, prefix, — это либо простое имя модуля, либо путь доступа name1 . name2 …, если определяющий модуль сам вложен в другие модули. При ссылке на конструкторы типов, типы модулей или типы классов prefix также может содержать простые применения функторов (как в приведённом выше синтаксическом классе extended-module-path), если определяющий модуль является результатом применения функтора.
Имена меток, имена тегов, имена методов и имена переменных экземпляра не требуют квалификации: первые три являются глобальными метками, а последние относятся к конкретному классу.
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/names.html