Mercury (язык программирования)
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 11 августа 2016 года; проверки требуют 7 правок.
Mercury | |
---|---|
Класс языка | логический, функциональный |
Появился в | 1995 |
Автор | Zoltán Somogyi |
Разработчик |
Университет Мельбурна |
Расширение файлов |
.m |
Выпуск | 22.01 (31 марта 2022 ) |
Система типов |
полиморфная |
Основные реализации | Melbourne Mercury Compiler |
Испытал влияние |
Prolog, Haskell |
Лицензия |
LGPL для стандартной библиотеки |
Сайт | mercurylang.org |
Mercury — язык
Prolog
:
- проблема производительности. Современные реализации языков логического программирования по производительности уступают реализациям языков программирования императивного типа.
- проблема отладки. Реализации языков логического программирования осуществляют меньше проверок во время компиляции, чем реализации языков программирования императивного типа. Это вынуждает программиста находить ошибки самому и без какой-либо существенной помощи со стороны отладчика.
Язык разработан в
Мельбурнском университете. Первую версию выпустили Fergus Henderson, Thomas Conway и Zoltan Somogyi 8 апреля 1995 года
.
Особенности
Синтаксис Mercury частично унаследован от Пролога, система типов похожа на
оптимизации. Название Mercury дано в честь бога скорости Меркурия и отражает направленность на получение быстродействующих программ. Операции, при реализации которых обычно отказываются от чисто декларативного подхода, такие как ввод-вывод, выражаются в Mercury с помощью декларативных конструкций, используя линейные типы
.
Реализация
С 2010 Проект Mercury имеет 6-месячный цикл выпуска релизов, где старший номер версии соответствует году выпуска, младший — месяцу начала работы над релизом. Более ранние версии имели номера вроде 0.12, 0.13… и время между выпуском стабильных версий было очень велико (около 3 лет).
Компилятор Mercury распространяется на официальном сайте в исходных кодах, пользователи
HTML Help с удобным оглавлением и индексом, а также плагин для редактора Vim
. Самая свежая на сегодняшний день сборка Mercury — 20.01.2.
Примеры
Hello World
:
:- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO) :-
io.write_string("Hello, World!\n", !IO).
Вычисление 10-го числа Фибоначчи (наиболее очевидным способом)[2]:
:- module fib.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int.
:-func fib(int) = int.
fib(N) = (if N =< 2 then 1 else fib(N - 1) + fib(N - 2)).
main(!IO) :-
io.write_string("fib(10) = ", !IO),
io.write_int(fib(10), !IO),
io.nl(!IO).
% Could instead use io.format("fib(10) =%d\n", [i(fib(10))], !IO).
Примечания
- ↑ NEWS for Mercury 22.01 . Дата обращения: 18 декабря 2023. Архивировано 18 декабря 2023 года.
- ↑ На основе Ralph Becket's Mercury tutorial Архивная копия от 21 сентября 2020 на Wayback Machine
Ссылки
- mercurylang.org — Официальный сайт Mercury
- code.google.com/p/winmercury — winmercury, User-friendly Mercury distribution for Windows
- adventuresinmercury.blogspot.com — Adventures in Mercury, блог посвященный языку
Это заготовка статьи о компьютерных языках. Помогите Википедии, дополнив её. |