языки логического программирования были вокруг в течение более чем двадцати лет. Несмотря на ожидаемые преимущества языка программирования очень высокого уровня, основанной на хорошо развитой теории логики по сравнению с традиционными языками программирования (таких как C, C ++, Pascal и Ada) они не имели существенного влияния на компьютерной индустрии.
Ртуть является новая логика / функциональный язык программирования, который сочетает в себе четкость и выразительность декларативного программирования с передовыми статического анализа и обнаружения ошибок возможностей.
Ртуть оптимизированный алгоритм выполнения обеспечивает эффективность намного превышает существующие системы логического программирования, и близко с традиционными системами программирования.
Меркурий рассматриваются проблемы развития крупномасштабной программы, что позволяет модульность, раздельная компиляция, а также многочисленные оптимизации / время компромиссов
Что нового В этом выпуске:.
- Это исправления ошибок и исправления релиз построить проблем на Solaris и NetBSD и добавляет поддержку для выбора C #, компилятор во время конфигурации.
- Различные другие незначительные ошибки были исправлены.
- Есть также некоторые незначительные дополнения к стандартной библиотеке.
Что нового в версии 13.05:
- Поколение 64-битных исполняемых Windows, теперь поддерживается.
- раз компиляции для очень больших программ были улучшены.
- Несколько новых представление типа оптимизации были добавлены.
- Отладчик теперь лучше поддержку для обработки клик взаимно рекурсивных вызовов в стеке.
- Привязка к библиотеке GLFW был добавлен к распределению Доп.
- Агрегаты, полученные с C #, серверной теперь могут быть подписаны с сильным именем.
Что нового в версии 11.01:
- Мы добавили два новых вида областей в языке.
- Область применения введен одним из новых ключевых слов require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous и require_failure, как следует из названия, требует цели внутри рамки, чтобы данный детерминизм.
- Область применения введен ключевому слову require_complete_switch требует цели внутри рамки, если это переключатель на переменную с именем объемом, чтобы быть полным переключатель, т.е. иметь оружие для всех функциональных символов в тип включенном переменной.
- Мы добавили semidet режимы для hash_table.fold / 4 и version_hash_table.fold / 4.
- Мы добавили новые предикаты и функции модуля assoc_list. Предикаты map_keys_only / 3 map_values_only / 3 и map_values / 3 дополнением функции с тем же именем. Предикаты фильтр / 3, negated_filter / 3, фильтр / 4, слияние / 3, которые также имеют функции версии, делать работу, очень похожие на предикатов с тем же именем в модуле Список, но делать соответствующие операции на ключи, а целых Список элементов.
- Мы переехали ленивый модуль оценки из распределения статистов и в новой стандартной библиотеки под названием модуля `ленивый. Это был также достигнут базовая агностик.
- Мы внесли изменения в модуле Список стандартной библиотеки:
- Мы добавили новый предикат list.member_index0 / 3. Это как list.member / 2, за исключением, что он также принимает параметр, представляющий нуля индекс элемента в списке.
- Мы добавили новый предикат list.map3_foldl / 7, который отображает по списку производства три списка и один сложенный значение.
- Мы добавили semidet режимов с уникальными аккумуляторов для list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, и list.foldl6 / 14.
- Мы добавили предикаты разделить / 4 и divide_by_set / 4 к tree_bitset модуля стандартной библиотеки.
- Мы добавили предикаты set_ctree234.member / 2 и set_ctree234.non_empty / 1. У нас есть добавить функцию set_ctree234.from_list / 1.
- Мы добавили предикат set_bbbtree.count / 2 и функция set_bbbtree.count / 1. Они заменить предикат set_bbbtree.size / 2, который в настоящее время не используется.
- Мы добавили предикат set_ordlist.non_empty / 1.
- Мы добавили предикат set_tree234.non_empty / 1 и функция set_tree234.from_list / 1.
- Мы добавили предикаты set_unordlist.non_empty / 1 и set_unordlist.count / 2, а функция set_unordlist.count / 1.
- Все модули стандартной библиотеки, которые реализуют набор ADT, (набор, set_ordlist, set_unordlist, set_bbbtree, set_tree234 и set_ctree234), теперь поддерживают складывающиеся над множествами до шести аккумуляторов. Режимы, которые обеспечивают уникальные и в основном-уникальные аккумуляторы для множества раза были также добавлены.
- Мы сделали следующие изменения в модуль массива стандартной библиотеки:
- Мы добавили функции unsafe_elem / 2 и добавить / 2.
- Мы добавили предикаты svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, и член / 2.
- Мы добавили предикаты version_array.foldl2 / 6, version_array.foldr / 4, и version_array.foldr2 / 6 в стандартной библиотеке.
- Мы добавили semidet режимов с уникальными и в основном-уникальных аккумуляторов для следующих предикатов:
- bimap.foldl2 / 6
- bimap.foldl3 / 8
- cord.foldl_pred / 4
- cord.map_foldl / 5
- list.map_corresponding_foldl2 / 8
- list.map_corresponding_foldl3 / 10
- list.map_corresponding3_foldl / 7
- map.foldl3 / 8
- Мы добавили предикат unsorted_aggregate2 / 6 с модулем решений стандартной библиотеки.
- Мы добавили несколько предикатов и функций в модуле требуют стандартной библиотеки. Предикаты извините / 2 и извините / 3 Отчет отсутствие признака, в то время как предикаты неожиданные / 2 и неожиданные / 3 Доклад о внутренней ошибке в программе; у всех есть функция версии тоже. Предикат ожидать / 3 звонки неожиданным, если условие не выполнено. Теперь у нас есть ожидание / 4, а также рассчитывать / 3. Для ожидание / 4, а также рассчитывать / 3, первые и последние аргументы ожидаемый состояние и сообщение об ошибке, соответственно, но с ожидать / 4, есть два аргумента в середине, чтобы указать местоположение ошибки (обычно название модуля и предиката, соответственно). Мы также добавили expect_not / 3 и expect_not / 4, которые, как ожидают, / 3 и ожидать / 4 соответственно, за исключением того, что они ожидают, условие было ложным * * не верно.
Что нового в версии 10.04.2:
- Этот релиз релиз ошибка-фикс. Ряд проблем, которые привели к компилятору прервать были зафиксированы некоторые сломанные операции RTTI в Java классе были зафиксированы, и мы добавили способ обхода проблемы с GCC версии 4.4.
Ограничения
- Текущая реализация еще не полностью реализовать язык Mercury. Основные ограничения текущей реализации являются следующие:
- Мы не позволяем определенные совмещения имен в системе режима. Без этого, частично экземпляры режимы непригодными, и так вложены уникальных режимов.
- компилятор еще не использовать структуры повторного использования или во время компиляции мусора использовать уникальные режимы.
- Тип и режим вывода немного несовершенна.
- Предикаты и функции могут иметь самое о 1000 аргументов.
- высшего порядка может иметь не более 500 аргументов о.
<класс Li = ""> bbli Кроме того, проектные решения в этой реализации внешних наложили следующие ограничения:
Условия
Комментарии не найдены