ML
| Семантика: |
мультипарадигменный: функциональный, императивный, модульный |
|---|---|
| Появился в: |
1973 |
| Автор(ы): |
Робин Милнер и др. - Эдинбургский университет |
| Типизация данных: | |
| Диалекты: |
Standard ML, Caml Light, OCaml, F#, LazyML, OcaMl |
| Повлиял на: |
ML (Meta Language) — семейство строгих языков функционального программирования с развитой полиморфной системой типов и параметризуемыми модулями. Подобная система типов была раньше предложена Роджером Хиндли в 1969 году и сейчас часто называется системой Хиндли-Милнера. Языки данного семейства не являются чистыми функциональными языками, так как включают и императивные инструкции. ML преподаётся во многих западных университетах (в некоторых даже как первый язык программирования).
Содержание |
[править] Предпосылки
В 1963 году Джон Алан Робинсон реализовал метод автоматического доказательства теорем, получивший название «принцип резолюции». Идея этого метода принадлежит Эрбрану, и предложена в 1930 году. Робинсон разработал эффективный с вычислительной точки зрения алгоритм унификации, являющийся основой метода. Так появился язык ML[уточнить], созданный для автоматического доказательства теорем, но как оказалось пригодный и в качестве языка программирования общего назначения.
[править] Особенности
В основе строгой и статической системы типов языка лежит лямбда-исчисление, к которому добавлена строгая типизация. Строгая система типов делает возможности для оптимизации, поэтому вскоре появляется компилятор языка. В системе типов Хиндли-Милнера ограниченно полиморфная система типов, где большинство типов выражений может быть выведено автоматически. Это даёт возможность программисту не описывать явно типы функций, но сохранить строгий контроль типов.
[править] Примеры
Вычисление факториала на ML:
fun fac(n) = if n = 0 then 1 else n * fac(n-1);
ML является интерактивным языком. Каждое введённое предложение анализируется, компилируется и исполняется, и значение, полученное в результате исполнения предложения, вместе с его типом выдаётся пользователю. В языке поддерживается обработка исключительных событий.
[править] Ссылки
- Статья ML в Прогопедии — энциклопедии языков программирования (рус.)
- http://schools.keldysh.ru/sch444/MUSEUM/LANR/ml.htm
| Основные языки программирования (сравнение • IDE • история • хронология) | |
|---|---|
| Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
| Академические | |
| IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
| Прочие | |
| Эзотерические | |
| Визуальные | |
| Это заготовка статьи о компьютерных языках. Вы можете помочь проекту, исправив и дополнив её. |
| В другом языковом разделе есть более полная статья ML (programming language) (англ.)
Вы можете помочь проекту, расширив текущую статью с помощью перевода.
|