Стандартный ML - это функциональный язык высокого уровня с выводом типов.

Стандартный ML

Стандартный ML - это полиморфный функциональный язык высокого уровня с проверкой типов и выводом типов во время компиляции. Это строгий язык с неизменяемыми типами данных, обновляемыми ссылками, абстрактными типами данных и параметрическими модулями. Он имеет надлежащую модульную систему, которая обеспечивает мощный механизм для создания, использования и повторного использования абстракций программирования, в отличие от Haskell, который "[...] модульная система служит в первую очередь как механизм для управления пространством имен [...]"( Формальная спецификация Модульная система Haskell 98). Он имеет эффективные реализации (приближающиеся к C) и формальное определение с доказательством надежности.

История

Первая версия StandardML была предложена в 1983 году и разработана в 1984-88 годах, а определение было опубликовано в 1990 году, поэтому она также получила название SML '90.

В 1997 г. было опубликовано пересмотренное определение, которое сопровождалось некоторыми упрощениями и добавлением Базовой библиотеки SML (см. Ниже).

Для получения дополнительной информации см. Историю стандартного машинного обучения.

Реализации

Есть несколько реализаций

Стандартный ML Нью-Джерси

  • Самая популярная реализация
  • Сокращенно SML/NJ
  • Написано на StandardML (за исключением системы времени выполнения, которая написана на C)
  • Использует диспетчер компиляции Маттиаса Блюма, CM, для значительного упрощения разработки больших программных проектов.
  • Библиотека SML/NJ предоставляет множество структур данных общего назначения, алгоритмов и утилит (таких как конечные наборы и карты, регулярные выражения, красивая печать).
  • Параллельное программирование на SML поддерживается библиотекой Concurrent ML.

Москва МЛ

  • Реализация на основе кода из Caml Special Light

MLton

PolyML

  • Компилятор и библиотека, написанные на стандартном ML, исполняющая система, написанная на C++
  • Включает отладчик исходного уровня
  • Поддерживает многоядерное оборудование: потоки ML и параллельный сборщик мусора
  • Поддерживает современные IDE (сообщения компилятора, предполагаемые типы, определения goto, области идентификаторов, завершение и т. Д.)

Комплект ML

  • Использует региональный анализ для управления памятью.
  • Поддерживает файлы ML Basis для компиляции больших программ
  • Эффективная компиляция модулей с использованием схемы компиляции, называемой статической интерпретацией, которая полностью исключает модули во время компиляции.
  • Включает графический профилировщик области, который помогает получить подробный контроль над повторным использованием памяти

Гамлет

HaMLet - точная и полная реализация стандартного языка программирования ML (SML'97). Его цель:

  • точная справочная реализация спецификации языка,
  • платформа для экспериментов с семантикой языка или ее расширениями,
  • полезный инструмент в образовательных целях.

MLj

MLj - это компилятор для StandardML, который производит байт-коды Java.

MLtoJs

Это компилятор от StandardML до JavaScript, который позволяет программистам пользоваться мощью статической типизации StandardML, функциями высшего порядка, сопоставлением с образцом и модулями для программирования клиентских веб-приложений.

MLWorks

MLWorks - это стандартный компилятор машинного обучения и среда разработки.

CakeML

Проверенная реализация значительной части StandardML.

SML №

ML# - это новый язык программирования в семействе StandardML, разрабатываемый RIEC (Исследовательский институт электрических коммуникаций) Университета Тохоку. Его цель дизайна - предоставить практически важные расширения, сохраняя при этом совместимость с Definition of StandardML.

Мантикора

Manticore - это язык параллельного программирования высокого уровня, предназначенный для приложений общего назначения, работающих на многоядерных процессорах. Manticore поддерживает параллелизм на нескольких уровнях: явный параллелизм и грубый параллелизм через конструкции в стиле CML и мелкозернистый параллелизм через различные упрощенные нотации, такие как параллельные выражения кортежей и понимание параллельных массивов в стиле NESL/Nepal.

Базовая библиотека SML

Базовая библиотека SML предоставляет интерфейсы и операции для основных типов, таких как целые числа и строки, поддержку ввода и вывода (I/O), интерфейсы к основным интерфейсам операционной системы и поддержку стандартных типов данных, таких как параметры и списки. Библиотека не пытается определять API более высокого уровня, такие как типы коллекций или компоненты графического пользовательского интерфейса. Эти API оставлены для других библиотек.

Самая последняя версия спецификации Basis Library (подпись) доступна по адресу http://www.standardml.org/Basis/. Иногда вносятся уточнения, исправления и дополнения.

Начиная

  1. Загрузите одну из упомянутых выше реализаций.

  2. Ответьте на эти вопросы о переполнении стека со ссылками на популярные веб-сайты, книги и руководства:

  3. Развлекайтесь и задавайте вопросы!

Примеры

Факториал:

   fun factorial 0 = 1
     | factorial n = n * factorial (n - 1)

Печать текста

 val _ = print "Hello, world!\n"

Книги

Прочие ссылки