ML

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
ML
З'явилась у 1973 р.
Автори: Робін Мілнер та ін. - Эдинбургзький університет
Типізація даних: сувора, статична, вивід типів
Діалекти: Standard ML, Caml Light, OCaml, F#, LazyML, OcaMl
Мала вплив на: Miranda, Haskell, Cyclone, Nemerle, C++

ML (Meta Language) — сімейство строго типізованих мов функціонального програмування з розвиненою поліморфною системою типів і модулями що параметризуються. Подібна система типів була раніше запропонована Роджером Хіндлі у 1969 році і зараз часто називається системою Хіндлі-Мілнера. Мови даного сімейства не є чистими функціональними мовами, тому що включають і імперативні інструкції. ML викладається у багатьох західних університетах (в деяких навіть як перша мова програмування).

Передумови[ред.ред. код]

В 1963 у Джон Алан Робінсон реалізував метод автоматичного доведення теорем, що отримав назву «принцип резолюції». Ідея цього методу належить Жаку Ербрану, і запропонована у 1930. Робінсон розробив ефективний з обчислювальної точки зору алгоритм уніфікації, що є основою методу. Так з'явилася мова ML, створена для автоматичного доведення теорем, але як виявилося придатна і в якості мови програмування загального призначення.

Особливості[ред.ред. код]

В основі суворої і статичної системи типів мови лежить лямбда-числення, до якого додана сувора типізація. Сувора система типів робить можливості для оптимізації, тому незабаром з'являється компілятор мови. В системі типів Хіндлі-Мілнера обмежено поліморфна система типів, де більшість типів виразів може бути виведено автоматично. Це дає можливість програмісту не описувати явно типи функцій, але зберегти суворий контроль типів.

Приклад[ред.ред. код]

Обчислення факторіалу на ML:

fun fac(n) = if n = 0 then 1 else n * fac(n-1);

Посилання[ред.ред. код]