Из каких типов объявлений состоит среда в SML? - PullRequest
0 голосов
/ 02 мая 2020

В SML среда состоит из привязок переменных и их обозначенных значений.

Содержит ли среда привязки каких из следующих объявлений?

  • val объявлений
  • объявления функций
  • объявления типов
  • объявления типов данных
  • объявления абстрактных типов
  • объявления исключений
  • локальные объявления
  • декларации исправления? Спасибо.

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Среда для основного языка имеет только три компонента: значения, типы и структуры. Для значений, помимо записи типа идентификатора, также указывается, является ли он конструктором.

Среда значений расширена на val, fun (просто сокращение для val), datatype , exception и (устарело) abstype объявлений.

Среда типа расширена объявлениями type, datatype и abstype.

Структура среды расширяется только объявлениями уровня модуля. Уровень модуля дополнительно добавляет функтор и среду подписи.

Локальные объявления просто управляют расширением этих сред, им не требуется собственная среда.

Исправление обрабатывается во время синтаксического анализа, поэтому не имеет среды во время проверки типа. Хотя технически это требуется во время синтаксического анализа.

Интересно, что семантика SML определяется так, что ей не требуется среда для переменных типа 'a, 'b, et c.

1 голос
/ 02 мая 2020

Если вы используете терминологию Определение стандарта ML (пересмотренная) , тогда среда состоит из среды значений, среды типов и среды структуры. Эти среды могут быть обновлены любым типом объявлений, кроме объявлений infix / infixr / nonfix (которые обрабатываются как преобразования syntacti c) и объявлений сигнатур и функторов (которые вносят вклад в среды сигнатур и функторов соответственно, что, несмотря на их имена не являются частью «среды», а скорее являются частью объекта более высокого уровня, называемого «базой», которая включает среду).

...