Mercury
- Русское название:
- Меркюри
- Дата создания:
- 8 апреля 1995
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .m
- Реализации и версии (свернуть все | развернуть все):
Mercury — это функционально-логический язык программирования, предназначенный для создания прикладных программ. Он разработан в Мельбурнском университете на кафедре теории вычислительных систем под руководством Золтана Сомоги. Первая версия была разработана Фергюсом Хендерсоном, Томасом Конвеем и Золтаном Сомоги и выпущена 8 апреля 1995 года.
Mercury — это чисто декларативный логический язык. Он основан одновременно на Prolog и Haskell. Характеризуется строгой, статической, полиморфной системой типов, а также строгими системами режимов и детерминизма.
Официальная реализация компилятора (Melbourne Mercury Compiler) доступна для большинства платформ на базе Unix, Mac OS X и Microsoft Windows (под Windows необходимы Cygwin или MinGW, и он может быть откомпилирован или GCC, или Microsoft Visual C++).
Элементы синтаксиса:
| Комментарий до конца строки | % |
|---|---|
| Комментарии, которые не могут быть вложенными | /* ... */ |
| Регулярное выражение идентификатора переменной | [_A-Z][_a-zA-Z0-9]* |
| Регулярное выражение идентификатора функции | [_a-z][_a-zA-Z0-9]* |
| Объявление переменной | = |
| Сравнение | < > =< >= |
| Определение функции | :- func f(typ1, typ2, ...) = typ0. f(Para1, Para2, ...) = ... |
| Вызов функции | f(a,b,...) |
| Вызов функции без параметров | f |
| Если - то - иначе | (if c then b1 else b2) |
Логотип Mercury
Примеры:
Hello, World!:
Пример для версий Mercury 10.04 :- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO) :-
io.write_string("Hello, World!\n", !IO).
Числа Фибоначчи:
Пример для версий Mercury 10.04Вычисление и вывод на экран десятого числа последовательности Фибоначчи.
:- 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).
Комментарии
]]>blog comments powered by Disqus
]]>