Spec-Zone.ru › OCaml
☰Язык программирования OCaml
  • Язык программирования OCaml
  • Расширения языка

Глава 11 Язык программирования OCaml

3 Имена

Идентификаторы используются для присвоения имён различным объектам языка и последующей ссылки на эти объекты по имени:

  • имена значений (синтаксическая категория имя-значения),
  • конструкторы значений и конструкторы исключений (категория имя-конструктора),
  • метки (имя-метки, определены в разделе ‍11.1),
  • метки полиморфных вариантов (имя-метки),
  • конструкторы типов (имя-конструктора-типа),
  • поля записей (имя-поля),
  • имена классов (имя-класса),
  • имена методов (имя-метода),
  • имена переменных экземпляра (имя-переменной-экземпляра),
  • имена модулей (имя-модуля),
  • имена типов модулей (имя-типа-модуля).

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

Именование объектов

имя-значения ::= строчный-идентификатор
∣ ( имя-оператора )
имя-оператора ::= префиксный-символ ∣ инфиксный-оператор
инфиксный-оператор ::= инфиксный-символ
∣ * ∣ + ∣ - ∣ -. ∣ = ∣ != ∣ < ∣ > ∣ or ∣ || ∣ & ∣ && ∣ :=
∣ mod ∣ land ∣ lor ∣ lxor ∣ lsl ∣ lsr ∣ asr
имя-конструктора ::= заглавный-идентификатор

См. также следующее расширение языка: расширенные операторы индексирования.

Как показано выше, префиксные и инфиксные символы, а также некоторые ключевые слова могут быть использованы в качестве имён значений, если они заключены в скобки. Правила регистров сведены в таблицу ниже.

Пространство имён Регистр первой буквы
Значения строчная
Конструкторы заглавная
Метки строчная
Метки полиморфных вариантов заглавная
Исключения заглавная
Конструкторы типов строчная
Поля записей строчная
Классы строчная
Переменные экземпляра строчная
Методы строчная
Модули заглавная
Типы модулей любой

Примечание по меткам полиморфных вариантов: текущая реализация принимает строчные метки вариантов дополнительно к заглавным, но рекомендуется избегать строчных меток вариантов для обеспечения портативности и совместимости с будущими версиями OCaml.

Ссылка на именованные объекты

value-path ::= [ module-path . ] value-name
constr ::= [ module-path . ] constr-name
typeconstr ::= [ extended-module-path . ] typeconstr-name
field ::= [ module-path . ] field-name
modtype-path ::= [ extended-module-path . ] modtype-name
class-path ::= [ module-path . ] class-name
classtype-path ::= [ extended-module-path . ] class-name
module-path ::= module-name { . module-name }
extended-module-path ::= extended-module-name { . extended-module-name }
extended-module-name ::= module-name { ( extended-module-path ) }

Именованный объект может быть указан либо по имени (следуя обычным правилам статического объявления имён), либо по пути доступа префикс . имя, где префикс обозначает модуль, а имя — имя объекта, определённого в этом модуле. Первый компонент пути, префикс, — это либо простое имя модуля, либо путь доступа имя1 . имя2 …, если определяющий модуль сам вложен в другие модули. При ссылках на конструкторы типов, типы модулей или типы классов префикс также может содержать простые применения функторов (как в синтаксическом классе extended-module-path выше), если определяющий модуль является результатом применения функтора.

Имена меток, тегов, имена методов и имена переменных экземпляров не нуждаются в квалификации: первые три являются глобальными метками, а последние — локальными для класса.

« ЗначенияТиповые выражения »
Авторские права © 2024 Institut National de Recherche en Informatique et en Automatique

© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/names.html

Spec-Zone.ru

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