Среда для основного языка имеет только три компонента: значения, типы и структуры. Для значений, помимо записи типа идентификатора, также указывается, является ли он конструктором.
Среда значений расширена на val
, fun
(просто сокращение для val
), datatype
, exception
и (устарело) abstype
объявлений.
Среда типа расширена объявлениями type
, datatype
и abstype
.
Структура среды расширяется только объявлениями уровня модуля. Уровень модуля дополнительно добавляет функтор и среду подписи.
Локальные объявления просто управляют расширением этих сред, им не требуется собственная среда.
Исправление обрабатывается во время синтаксического анализа, поэтому не имеет среды во время проверки типа. Хотя технически это требуется во время синтаксического анализа.
Интересно, что семантика SML определяется так, что ей не требуется среда для переменных типа 'a
, 'b
, et c.