Logic programozási nyelvek már körül több mint húsz éve. Annak ellenére, hogy a várható előnyeiről nagyon magas szintű programozási nyelv alapján jól fejlett elméletek logikai, mint a hagyományos programozási nyelvek (például a C, C ++, Pascal és Ada) nem volt jelentős hatással a számítógépes iparban.
A higany egy új logikai / funkcionális programozási nyelv, amely egyesíti a világosság és kifejező ereje deklaratív programozás fejlett statikus elemzés és hiba észlelése jellemzői.
Mercury erősen optimalizált végrehajtása algoritmus a hatékonyságot messze meghaladó meglévő logikai programozási rendszerekben, és közel van a hagyományos programozási rendszereket.
Mercury problémáival foglalkozik nagyszabású program kidolgozása, amely lehetővé teszi a modularitás, külön összeállítása, és számos optimalizációs / idő kompromisszumokat.
Mi az új ebben a kiadásban:
- Ez a hibajavítás kiadás javít építeni problémák Solaris és NetBSD és további támogatást nyújt kiválasztja a C # fordító, a konfiguráció során.
- egyéb kisebb hiba javítva lett.
- Van még néhány kisebb kiegészítésekkel a standard könyvtár.
Mi az új verzióban 13.05:
- Generation 64 bites futtatható Windows támogatott.
- Compilation alkalommal nagyon nagy programok is javult.
- Több új típusú képviselet optimalizációt is került.
- A debugger most már jobban támogatja a kezelési klikkek kölcsönösen rekurzív felhívja a stack.
- A kötődés a GLFW könyvtár bővült az extrák forgalmazás.
- szerelvények generált a C # backend most írt alá egy erős nevét.
Mi az új verzióban 11.01:
- Van hozzá két új típusú körök a nyelvet.
- A hatálya által bevezetett egyik új kulcsszavak require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous és require_failure, mint a neve is mutatja, igényli a cél hatókörén belül van az adott determinizmus.
- A hatálya által bevezetett kulcsszó require_complete_switch igényel a cél hatókörén belül, ha ez egy kapcsolót a változó nevű hatálya alá, hogy a teljes átállás, azaz, hogy fegyvert az összes funkció szimbólumok a típus a bekapcsolt változó.
- Van hozzá semidet mód hash_table.fold / 4 és version_hash_table.fold / 4.
- Van hozzá új predikátumok és függvények a assoc_list modul. A predikátumok map_keys_only / 3 map_values_only / 3 és map_values / 3 kiegészítője a funkciót az azonos nevű. A predikátumok szűrő / 3, negated_filter / 3, szűrő / 4, merge / 3, ami szintén funkciója verzió, nem munkahely nagyon hasonlít a predikátumok az azonos nevet a listából modult, de nem a megfelelő műveleteket billentyűk helyett teljes lista elemeit.
- léptünk a lusta értékelés modult a statiszták forgalmazási és egy új szabvány könyvtári modult, az `lusta". Azt is tette backend-agnosztikus.
- változtatások történtek a listán modul a standard könyvtár:
- Mi hozzá egy új állítmány list.member_index0 / 3. Olyan ez, mint list.member / 2, kivéve, hogy ez is úgy paraméter képviselő nulla bázisú index az elem a listán.
- Mi hozzá egy új állítmány list.map3_foldl / 7 ami leképezi egy listát előállító három listát és egy összehajtogatott értéke.
- Adtunk semidet módok egyedi akkumulátorok list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, és list.foldl6 / 14.
- Van hozzá predikátumok ossza / 4 és divide_by_set / 4 a tree_bitset modul a standard könyvtár.
- Van hozzá predikátumok set_ctree234.member / 2 és set_ctree234.non_empty / 1. Megvan hozzá a funkciót set_ctree234.from_list / 1.
- Van hozzá az állítmány set_bbbtree.count / 2 és a funkció set_bbbtree.count / 1. Ezek helyett a állítmány set_bbbtree.size / 2, amely mára elavulttá.
- Van hozzá az állítmány set_ordlist.non_empty / 1.
- Van hozzá az állítmány set_tree234.non_empty / 1 és a funkció set_tree234.from_list / 1.
- Van hozzá predikátumok set_unordlist.non_empty / 1 és set_unordlist.count / 2, és a funkciót set_unordlist.count / 1.
- az összes modult, a standard könyvtár, amely végrehajtja a beállított ADT, (set, set_ordlist, set_unordlist, set_bbbtree, set_tree234, és set_ctree234), most már támogatja összecsukható fölött készletek akár hat akkumulátorok. Mód, hogy egyedi, leginkább egyedi akkumulátorok set-szeres is kerültek.
- Így van, a következő változtatásokat array modul a standard könyvtár:
- Van hozzá funkciók unsafe_elem / 2 és fűzze a / 2.
- Van hozzá predikátumok svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, és a tag / 2.
- Van hozzá predikátumok version_array.foldl2 / 6, version_array.foldr / 4, és version_array.foldr2 / 6 a standard könyvtár.
- Van hozzá semidet módok egyedi és többnyire egyedi akkumulátorok a következő predikátumok:
- 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
- Van hozzá az állítmány unsorted_aggregate2 / 6 a megoldást modul a standard könyvtár.
- Van hozzá több predikátumok és függvények az igénylő modul a standard könyvtár. A predikátumok sajnálom / 2 és sajnálom / 3 jelentés hiányában a szolgáltatás, míg a predikátumok váratlan / 2 és váratlan / 3 jelentés belső hibát a programban; mind a funkció változatban is. Az állítmány várják / 3 hívás váratlanul, ha a feltétel nem teljesül. Most várják / 4, valamint a várható / 3. Mert várják / 4, valamint a várható / 3, az első és az utolsó érv a várható állapotát és a hibaüzenet -kal, de elvárják / 4, két érv a közepén, hogy meghatározza a helyét a hiba (általában a nevet A modul és az alapul -kal). Azt is hozzá expect_not / 3 és expect_not / 4, amelyek olyanok, mint várják / 3 és elvárják / 4-ig, kivéve azt várják a feltétellel, hogy * * hamis, nem igaz.
Mi az új verzióban 10.04.2:
- Ez a kiadás egy bug-fix kiadás. Számos probléma, amely miatt a fordító, hogy megszakítja ki lett javítva, néhány törött RTTI műveletek a java minőségű lett javítva, és van hozzá egy áthidaló megoldást a problémára es gcc 4.4.
korlátai :
- A jelenlegi végrehajtása még nem maradéktalanul hajtsa végre a Mercury nyelv. A legfőbb korlátait a jelenlegi végrehajtása a következők:
- Nem engedjük határozott aliasing a módban rendszert. E nélkül, részben példányai módok használhatatlan, és így egymásba ágyazott egyedi mód.
- A fordító még nem használja szerkezete újrafelhasználás vagy fordítási időben szemétgyűjtő kihasználni egyedi mód.
- típusát és módja következtetési egy kicsit hiányos.
- Ezen kívül, tervezési döntések ebben a végrehajtásáról történő szabtak ki az alábbi határértékeket:
- Predikátumok és függvények legfeljebb 1000 érveket.
- A magasabb rendű tagokat lehet legfeljebb 500 érveket.
Hozzászólás nem található