Logic езици за програмиране са били около продължение на повече от двадесет години. Въпреки очакваните предимства на много високо ниво език за програмиране на базата на добре развити теории на логиката в сравнение с конвенционалните програмни езици (като C, C ++, Pascal и Ada) те не са имали значително влияние върху компютърната индустрия.
Меркурий е нова логика / функционален език за програмиране, който съчетава най-голяма яснота и изразителност на декларативно програмиране с разширени статичен анализ и откриване на грешки функции.
Меркурий е силно оптимизиран алгоритъм изпълнение осигурява ефективност далеч по-силна от съществуващите системи за логическо програмиране, както и в близост до конвенционалните системи за програмиране.
Mercury адресира проблемите на мащабна програма за развитие, която позволява приспособяване, отделна компилация, както и многобройни оптимизация / време компромиси
Какво ново в тази версия:.
- Това поправки отстраняваща грешки изграждане проблеми на Solaris и NetBSD и добавя поддръжка за избор на C # компилатора по време на конфигурацията.
- Различни други незначителни бъгове са фиксирани.
- Има и някои малки допълнения към стандартната библиотека.
Какво ново във версия 13.05:
- Генериране на 64-битовите изпълними файлове на Windows вече се поддържа.
- съставяне пъти за много големи програми са подобрени.
- Няколко нови вид представителство оптимизации са били добавени.
- Дебъгерът сега има по-добра поддръжка за работа с клики на взаимно рекурсивни повиквания в стека.
- A свързване към библиотеката GLFW е добавен към разпределението на удобства.
- Изпълнения генерирани с C # гръб вече могат да бъдат подписани със силно име.
Какво ново във версия 11.01:
- Ние добавихме две нови видове мерници за езика.
- A приложение, въведени от един от новите ключови думи require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous и require_failure, както подсказва името, изисква целта вътре в обхвата да имат предвид детерминизъм.
- A приложение, въведени от 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 доклад вътрешна грешка в програмата; всички те имат функция версии също. The предиката очакваме / 3 повиквания неочаквана ако едно от условията не е изпълнено. Сега имаме очакваме / 4, както се очаква / 3. За очакваме / 4, както се очаква / 3, първата и последната аргументи са очаквано състояние и съобщението за грешка, съответно, но с очакваме / 4, има два аргумента в средата за да се уточни мястото на грешката (обикновено името на модула и на предиката съответно). Ние също така добавя expect_not / 3 и expect_not / 4, които са като очакваме / 3 и очакваме / 4 с изключение на това, което очакват състоянието да бъде * фалшива *, не е вярно.
Какво ново във версия 10.04.2:
- Тази версия е освобождаване бъг-Fix. Редица проблеми, които са причинили на компилатора да прекратите са фиксирани, някои счупени операции RTTI в клас Java са фиксирани, и сме добавили заобиколно решение за проблем с GCC версия 4.4.
<силни> Ограничения :
- <Ли клас = "bbli"> Текущата реализация все още не прилага напълно език Mercury. Основните ограничения на текущото изпълнение са следните:
- Ние не допускаме определено псевдонимите в системата на режима. Без това, частично инстанция режими са неизползваеми, и така са вложени уникални режима.
- Компилаторът все още не се използва структура повторна употреба или време на компилация събиране на боклука да използват уникални режима.
- Type и режим извод са малко несъвършена.
- предикати и функции могат да имат най-много около 1000 аргументи.
- по-висок порядък отношение могат да имат най-много около 500 аргументи.
<Ли клас = "bbli"> В допълнение, са наложени дизайнерски решения в тази текущото изпълнение на следните граници:
Коментари не е намерена