Standard ML of New Jersey ( SML / NJ ; Standard Meta-Language of New Jersey) - это бесплатный компилятор и среда программирования с открытым исходным кодом для стандартного языка программирования ML . Помимо своей исполняющей системы , которая написана на C , SML / NJ написан на Standard ML. Первоначально он был разработан совместно Bell Laboratories и Принстонским университетом . [3]
Парадигма | Мультипарадигма : функциональная , императивная |
---|---|
Стабильный выпуск | 110.99 [1] / 24 декабря 2020 г . |
Печатная дисциплина | сильный , статичный , предполагаемый |
Лицензия | BSD-подобная лицензия [2] |
Расширения имени файла | .sml |
Веб-сайт | www |
Под влиянием | |
Стандартный ML | |
Под влиянием | |
Мифрил |
Его название является отсылкой как к американскому штату Нью-Джерси, в котором расположены Princeton и Bell Labs, так и к Standard Oil of New Jersey , известной нефтяной монополии начала 20 века.
Функции
SML / NJ расширяет базовую библиотеку SML'97 несколькими дополнительными структурами верхнего уровня: [4]
- Информация о системе -
SysInfo
структура предоставляет информацию о системе времени выполнения, такую как тип, тип и версия операционной системы , а также поддерживает ли машина многопроцессорность . [5] - Слабые указатели -
Weak
структура обеспечивает поддержку слабых указателей . [6] - Ленивые приостановки -
Susp
структура реализует приостановки, необходимые для ленивой оценки (в отличие от нетерпеливой оценки ). [7] - Внутреннее устройство компилятора -
Internals
структура обеспечивает доступ к нескольким внутренним компонентам компилятора, включая методы для создания и изменения таблицы сигналов. [8] - Небезопасный доступ -
Unsafe
структура обеспечивает небезопасный доступ к структурам данных и функциям исполняющей системы. [9] - Видимые структуры компилятора - SML / NJ также включает структуры, обеспечивающие доступ к компилятору ML, который содержит подструктуры для профилирования выполнения, управления печатью сообщений об ошибках компилятора и предупреждений, а также настраиваемую красивую печать. [10]
Кроме того, SML / NJ предоставляет некоторые синтаксические конструкции, которые не являются стандартными функциями SML'97: [4]
- Векторные выражения и шаблоны - SML / NJ позволяет создавать векторы с помощью синтаксиса и позволяет сопоставить их с образцом с аналогичным синтаксисом.
#[exp0, exp1, ..., expn−1]
- Или-шаблоны - SML / NJ расширяет синтаксис шаблонов SML'97, позволяя сопоставить несколько шаблонов в одном правиле, при условии, что каждый шаблон имеет один и тот же тип, используя .
(apat1 | ... | apatn) => exp
- Внедрение объектного языка - SML / NJ предоставляет синтаксис кавычек / антицитатов, который позволяет встраивать выражения в конкретный синтаксис объектного языка в выражения и программы ML. [11]
- Модули высшего порядка - SML / NJ поддерживает параметризацию функторов, позволяя функторам быть компонентами структур в дополнение к параметрическим модулям Standard ML в форме функторов.
Разработка
Преемник ML - это термин, используемый для описания следующей версии языка. Документы, описывающие его, были извлечены из файлов SML / NJ '97 и доступны в виде репозитория документов TeX на GitHub, с которыми сообщество, как ожидается, будет сотрудничать и развивать язык. [12] Возможности преемника машинного обучения можно включить с помощью параметра командной строки . [13]-Cparser.succ-ml=true
По крайней мере, с 1998 года [14] MLton [15] является стандартным компилятором начальной загрузки , и он имеет некоторую [16] поддержку для Successor ML.
В 2008 году началась работа над Гамлетом , [17] эталонную реализацию правопреемник ML полностью написана на Standard ML. [18] По состоянию на 2018 год HaMLet остается единственной полной реализацией Successor ML с дополнительными нововведениями. [16]
С 2015 года [19] развитие SML / NJ было направлено на развитие библиотеки Basis [20] и добавление поддержки определения Successor ML с выпуском версии 110.79. [13]
В конце 2020 года была добавлена поддержка 64-битных версий с выпуском версии 110.99. [19]
Смотрите также
- Расширенный ML
- Зависимый ML
Внешние ссылки
- Стандартный ML Нью-Джерси
- Преемник ML
- Стандартная базовая библиотека машинного обучения
- Гамлет
Рекомендации
- ^ https://smlnj.org/dist/working/110.99/index.html .
- ^ "Стандартный ML лицензии Нью-Джерси" . www.smlnj.org .
- ^ «Справочная информация о SML / NJ» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ а б «Особенности SML / NJ» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ "Подпись SYS_INFO" . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «СЛАБАЯ подпись» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «Подпись SUSP» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «ВНУТРЕННЯЯ подпись» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «Небезопасная структура» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «Видимый компилятор» . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ "SML / NJ Quote / Antiquote" . www.smlnj.org . Проверено 5 сентября 2018 .
- ^ «Определение преемника ML» .
- ^ а б "Стандартный ML из Нью-Джерси, версия 110.79 НОВОСТИ" . 2015-10-04.
- ^ "MLton 1999-03-19 изменения примечания" .
- ^ "Репозиторий MLton" .
- ^ а б «Три попытки реализации для поддержки преемника ML» .
- ^ Андреас Россберг. «HaMLet S: стать или не стать преемником ML» (PDF) .
- ^ «Интерпретатор справочника SML» .
- ^ а б «Стандартный журнал изменений ML Нью-Джерси для версии 110.99» .
- ^ «Стандартная базовая библиотека машинного обучения» .