Введение

Функциональный логический язык программирования Mercury Autocode

Mercury – это функциональный язык логического программирования, разработанный для практического применения. Первая версия была создана в Университете Мельбурна, на факультете компьютерных наук, Фергусом Хендерсоном, Томасом Конвеем и Золтаном Сомоги под руководством Золтана Сомоги и выпущена 8 апреля 1995 года. Mercury является чисто декларативным языком логического программирования. Он имеет родство как с Prolog, так и с Haskell. В нем реализована строгая, статическая, полиморфная система типов, а также строгая система режимов и детерминизма. Официальная реализация, Melbourne Mercury Compiler, доступна для большинства Unix и Unix-подобных платформ, включая Linux, macOS и Windows.

Обзор

Меркурий основан на логическом языке программирования Prolog. Он имеет тот же синтаксис и те же основные концепции, такие как алгоритм селективного линейного детерминированного разрешения (SLD). Его можно рассматривать как чистое подмножество Prolog с сильной типизацией и модами. В связи с этим он часто сравнивается со своим предшественником по функциональности и эффективности выполнения. Язык разработан с применением принципов инженерии программного обеспечения. В отличие от оригинальных реализаций Prolog, он имеет отдельную фазу компиляции, а не непосредственную интерпретацию. Это позволяет выявлять гораздо более широкий спектр ошибок до запуска программы. Он обладает строгой статической системой типов и модов. Его авторы утверждают, что Mercury – самый быстрый логический язык в мире с большим отрывом, однако это может усложнить выражение некоторых конструкций программирования (например, переключателя по множеству вариантов с ветвью по умолчанию). Хотя Mercury допускает использование нечистых функций, они в основном служат для вызова кода на других языках. Весь нечистый код должен быть явно помечен. Операции, которые обычно являются нечистыми (например, ввод/вывод), в Mercury выражаются с использованием чистых конструкций и линейных типов, путем передачи фиктивного значения мира через весь соответствующий код. Примечательные программы, написанные на Mercury, включают компилятор Mercury и XML-форматер Prince. Компания ODASE также использует Mercury для разработки своей платформы разработки программного обеспечения, ориентированной на онтологии, ODASE.