ML — функциональный язык программирования общего назначения, разработанный Робином Милнером (Robin Milner) и другими в поздних 1970-ых в Университете Эдинбурга; синтаксис этого языка создан под влиянием ISWIM.
Исторически ML расшифровывается как MetaLanguage (метаязык), т. к. он был использован для разработки тактики вывода автоматических доказательств теорем LCF (язык, для которого ML был метаязыком — pplambda, комбинация исчисления предикатов первого порядка и полиморфного λ-исчисления с простой типизацией).
Известен благодаря использованию алгоритма вывода типов Хиндли-Милнера (Hindley-Milner type inference algorithm), который может вычислять тип большинства значений без потребности в экстенсивной аннотации типов, часто критикуемой в таких языках, как Java.
Перечислим наиболее важные черты ML: ML является функциональным языком программирования. Функции являются полноправными объектами: они могут передаваться в качестве аргументов, вырабатываться в качестве результата и храниться в переменных. Основной способ организации управления в программах на ML - рекурсивное применение функций ML является интерактивным языком. Каждое введенное предложение анализируется, компилируется и исполняется, и значение, полученное в результате исполнения предложения, вместе с его типом выдается пользователю ML является строго типизированным языком. Каждое допустимое выражение имеет тип, который автоматически определяется ML имеет полиморфную систему типов. Каждое допустимое предложение языка обладает однозначно определяемой наиболее общей типизацией, которая определяет контексты, в которых предложение может быть использовано. ML поддерживает абстрактные типы данных. Абстрактные типы весьма полезный механизм в модульном программировании. Новые типы данных могут быть определены вместе с набором операций над значениями этих типов в ML области действия идентификаторов определяются статически. Смысл всех идентификаторов в программе определяется статически, что позволяет создавать более модульные и более эффективные программы ML содержит надежно типизированный механизм обработки исключительных событий ML содержит средства разбиения программ на модули, обеспечивающие возможность разработки больших программ по частям
Элементы синтаксиса:Комментарии, которые не могут быть вложенными (* ... *) Регистрозависимость да Присваивание значения переменной := Сравнение < > <= >= Последовательность ; Если - то if (condition) then ... Если - то - иначе if (condition) then ... else ... Цикл с предусловием while (condition) do ...
Дата создания: 1973 Создан под влиянием: ISWIM Повлиял на: Cyclone F# Haskell Miranda Scala Парадигма: императивная, мультипарадигма, функциональная Типизация: вывод типов, статическая, строгая Диалекты: CAML Standard ML Реализации и версии (свернуть все | развернуть все): Caml Light Caml Special Light Dependent ML Edinburgh ML Extended ML GAML HaMLet HaMLet S Heavy CAML Lazy ML ML Kit MLj MLton MOSCOW ML MicroML Objective CAML Poly/ML SML# SML.NET SML/NJ SMLtoJs Successor ML TILT sml2c
|