]]> ]]>
Править | Обсудить | История

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
Логотип 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

]]>

Работа программистам