Logic programovací jazyky byly po více než dvacet let. Navzdory očekávané výhody velmi vysoké úrovni programovací jazyk založený na dobře vyvinutými teorie logiky než konvenčních programovacích jazyků (jako je C, C ++, Pascal a Ada), které neměly významný dopad na počítačovém průmyslu.
Merkur je nový logické / funkční programovací jazyk, který kombinuje jasnost a expresivitu deklarativní programování s pokročilými statické analýzy a detekce chyb funkcí.
Merkur je vysoce optimalizovaný výkon algoritmus přináší efektivitu daleko více než stávajících logické programování systémů, a v blízkosti běžných programovacích systémů.
Mercury řeší problémy rozvoje rozsáhlých programů, který umožňuje modularity, samostatné kompilace, a četné kompromisy optimalizace / času
Co je nového v této verzi:.
- Tento Oprava chyby opravuje úniku vybudovat problémy na Solaris a NetBSD a přidává podporu pro volbu C # kompilátoru v době konfigurace.
- různé další drobné chyby byly opraveny.
- Tam jsou také některé menší přírůstky do standardní knihovny.
Co je nového ve verzi 13.05:
- Generace 64-bitových spustitelné soubory v systému Windows je nyní podporována.
- kompilace časy velkých programů.
- Bylo přidáno několik nových optimalizace typ reprezentace.
- debugger má nyní lepší podporu pro práci s klik vzájemně rekurzivní volání v zásobníku.
- vázat se na knihovny GLFW byl přidán k distribuci Extra.
- Sestavy generované s C # backend lze nyní podepsal se silným názvem.
Byly vylepšeny
Co je nového ve verzi 11.01:
- Přidali jsme dva nové druhy oborů na jazyku.
- Rozsah představil jeden z nových klíčových slov require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous a require_failure, jak název napovídá, vyžaduje cíl uvnitř rozsahu, aby daný determinismus.
- Rozsah zavedla klíčovým slovem require_complete_switch vyžaduje cíl uvnitř rozsahu, pokud je přepínač na proměnné pojmenované podle rozsahu, být úplný přechod, tj mít zbraně pro všechny funkčních symbolů typu zapnuté proměnné.
- Přidali jsme semidet režimy hash_table.fold / 4 a version_hash_table.fold / 4.
- Přidali jsme nové predikáty a funkce na assoc_list modulu. Tyto predikáty map_keys_only / 3 map_values_only / 3 a map_values / 3 doplňují funkce se stejným názvem. Tyto predikáty filtr / 3, negated_filter / 3, filtr / 4, sloučení / 3, které mají i verze funkce, do práce velmi podobné predikáty se stejným názvem v modulu seznamu, ale že příslušné operace na klíče namísto celých Prvky seznamu.
- Přestěhovali jsme se líný vyhodnocení modul z distribuce Doplňky a do nového standardní knihovny modulu s názvem `líný". To bylo také dosaženo backend-agnostik.
- jsme udělali změny v seznamu modulu standardní knihovny:
- Přidali jsme nové predikát list.member_index0 / 3. Je to jako list.member / 2, s výjimkou, že se také přebírá parametr reprezentující nuly index prvku v seznamu je.
- Přidali jsme nový predikát list.map3_foldl / 7, která mapuje přes seznam produkující tři seznamy a jeden složený hodnotu.
- Přidali jsme semidet režimy s jedinečným akumulátory pro list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, a list.foldl6 / 14.
- Přidali jsme predikáty rozdělit / 4 a divide_by_set / 4 na tree_bitset modulu standardní knihovny.
- Přidali jsme predikáty set_ctree234.member / 2 a set_ctree234.non_empty / 1. Máme přidat funkci set_ctree234.from_list / 1.
- Přidali jsme predikát set_bbbtree.count / 2 a funkce set_bbbtree.count / 1. Ty nahrazují predikát set_bbbtree.size / 2, který je dnes již nepoužívá.
- Přidali jsme predikát set_ordlist.non_empty / 1.
- Přidali jsme predikát set_tree234.non_empty / 1 a funkce set_tree234.from_list / 1.
- Přidali jsme predikáty set_unordlist.non_empty / 1 a set_unordlist.count / 2, a funkce set_unordlist.count / 1.
- Všechny moduly ve standardní knihovny, které používají set ADT, (set, set_ordlist, set_unordlist, set_bbbtree, set_tree234, a set_ctree234), nyní podporují skládací přes sad s až šesti akumulátory. Byly také přidány režimy, které poskytují unikátní a hlavně, unikátní akumulátory pro set krát.
- jsme provedli následující změny pole modulu standardní knihovny:
- Přidali jsme funkce unsafe_elem / 2 a připojit / 2.
- Přidali jsme predikáty svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, a člen / 2.
- Přidali jsme predikáty version_array.foldl2 / 6, version_array.foldr / 4, a version_array.foldr2 / 6 na standardní knihovny.
- Přidali jsme semidet režimy s jedinečným a hlavně, jedinečné akumulátory pro tyto predikáty:
- 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
- Přidali jsme predikát unsorted_aggregate2 / 6 na řešení modulu standardní knihovny.
- Přidali jsme několik predikáty a funkce na požadovat modulu standardní knihovny. Tyto predikáty líto / 2 a omlouvám zpráva / 3 absence prvku, zatímco predikáty nečekané / 2 a nečekané / 3 Zpráva vnitřní chybě v programu; Všechny mají verze funkce taky. Predikát očekávat / 3 hovory neočekávané, pokud podmínka není splněna. V současné době máme Očekáváme / 4 stejně jako čekat / 3. Pro očekávat / 4 stejně jako čekat / 3, první a poslední argumenty jsou očekávaný stav a chybová zpráva, respektive, ale očekáváme / 4, existují dva argumenty ve středu zadejte umístění chyby (obvykle jméno modulu a predikátu v tomto pořadí). Také jsme přidali expect_not / 3 a expect_not / 4, které jsou stejně jako očekávat / 3 a očekávat / 4, respektive, s výjimkou, že očekávají, že podmínka bude * false *, není to pravda.
Co je nového ve verzi 10.04.2:
- Tato verze je bug-fix release. Řada problémů, které způsobily, že kompilátor přerušit byly opraveny, byly některé rozbité operace RTTI ve třídě java byla opravena, a my jsme přidali řešení pro problém s GCC verze 4.4.
Omezení :
- Aktuální implementace není dosud plně implementovat jazyk Mercury. Hlavní omezení současné implementaci jsou následující:
- Nechceme, aby definitivní aliasingu v systému režimu. Bez toho, částečně instance režimy jsou nepoužitelné, a proto jsou vnořené unikátní režimy.
- kompilátor dosud nepoužívají opětovné struktury nebo v době kompilace úklid využít jedinečných druhů.
- Type a režim závěr jsou trochu nedokonalé.
- Kromě toho, rozhodnutí designu v tomto implemenation byly uloženy tyto limity:
- predikáty a funkce mohou mít nanejvýš asi 1000 argumentů.
- vyššího řádu termíny mohou mít nanejvýš asi 500 argumenty.
Komentáře nebyl nalezen