Mercury

Screenshot Software:
Mercury
Detalii soft:
Versiune: 13.05.1
Incarca data: 15 Apr 15
Producător: Mercury Developers
Licenţă: Gratuit
Popularitate: 59

Rating: 2.0/5 (Total Votes: 2)

limbaje de programare logică au fost în jur de mai mult de douăzeci de ani. În ciuda avantajelor așteptate ale unui foarte mare limbaj de programare de nivel bazate pe teorii bine dezvoltate ale logicii peste limbaje de programare convenționale (cum ar fi C, C ++, Pascal și Ada), ei nu au avut un impact semnificativ asupra industriei de calculatoare.
Mercur este o nouă logică / limbaj de programare funcțional, care combină claritatea și expresivitatea programării declarative cu analiza și detectarea erorilor caracteristici statice avansate.
Mercur este foarte optimizat algoritmul de executare oferă eficiență mult mai mare de sisteme de programare logică existente, precum și aproape de sistemele de programare convenționale.
Mercur abordează problemele de dezvoltare a programului pe scară largă, care să permită modularitatea, compilare separată, și numeroase optimizare / timp compromisuri

Ce este nou în această versiune:.

  • Acest bugfix stabilește eliberare construi probleme pe Solaris și NetBSD și adaugă suport pentru selectarea C # compilator la momentul configurării.
  • Diverse alte bug-uri minore au fost stabilite.
  • Există, de asemenea unele adăugiri minore la biblioteca standard.

Ce este nou în versiunea 13.05:

  • Generarea de executabile pe 64 de biți pentru Windows este acum suportat.
  • reduși pentru programele foarte mari au fost îmbunătățite.
  • Mai multe tipuri de noi optimizări de reprezentare tip nu a fost adaugata.
  • Depanatorul are acum un suport mai bun pentru manipularea clici de apeluri recursive reciproc pe stiva.
  • O legare la biblioteca GLFW a fost adăugat la distribuirea extra.
  • întrunirilor generate cu C # backend poate fi acum a semnat cu un nume puternic.

Ce este nou în versiunea 11.01:

  • Am adaugat doua noi tipuri de domenii la limba.
  • Un domeniu introdusă de unul dintre cuvintele cheie noi require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous și require_failure, cum sugerează și numele, impune gol în interiorul domeniului de aplicare a avea determinismul dat.
  • Un domeniu introdus de require_complete_switch cuvinte cheie necesită gol în interiorul domeniului de aplicare, în cazul în care este un comutator de pe variabila numită de domeniul de aplicare, pentru a fi un comutator complet, adică să aibă arme pentru toate simbolurile de funcții în tipul de pornit pe variabila.
  • Am adaugat moduri semidet pentru hash_table.fold / 4 și version_hash_table.fold / 4.
  • Am adaugat noi predicate și funcții pentru modulul assoc_list. Predicatele map_keys_only / 3 map_values_only / 3 și map_values ​​/ 3 completare funcțiile cu același nume. Predicatele filtrează / 3, negated_filter / 3, se filtrează / 4, îmbinare / 3, care au, de asemenea, versiuni funcționale, nu de locuri de muncă foarte asemănătoare cu predicatele cu același nume din modulul listă, dar nu acțiunile relevante privind chei în loc de întregul Elemente de listă.
  • Ne-am mutat modulul de evaluare leneș din distribuția figuranti și într-un nou modul standard de bibliotecă numit `leneș". Acesta a fost, de asemenea făcut-backend agnostic.
  • Ne-am făcut modificări la modulul lista biblioteca standard:
  • Am adaugat un nou predicat list.member_index0 / 3. Este ca și cum list.member / 2, cu excepția că este nevoie, de asemenea, un parametru care reprezintă indicele de plecare zero a elementului în listă.
  • Am adaugat un nou predicat list.map3_foldl / 7, care harti pe o listă care produce trei liste și o valoare pliat.
  • Am adăugat moduri semidet cu acumulatori unice pentru list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, și list.foldl6 / 14.
  • Am adaugat predicatele diviza / 4 și divide_by_set / 4 la modulul tree_bitset de biblioteca standard.
  • Am adaugat predicatele set_ctree234.member / 2 și set_ctree234.non_empty / 1. Avem adăuga funcție set_ctree234.from_list / 1.
  • Am adaugat set_bbbtree.count predicatul / 2 și funcția set_bbbtree.count / 1. Acestea înlocuiesc predicatul set_bbbtree.size / 2 care este acum depreciat.
  • Am adaugat predicatul set_ordlist.non_empty / 1.
  • Am adaugat set_tree234.non_empty predicat / 1 și funcția set_tree234.from_list / 1.
  • Am adaugat predicatele set_unordlist.non_empty / 1 și set_unordlist.count / 2, iar funcția set_unordlist.count / 1.
  • Toate modulele din biblioteca standard, care pun în aplicare ADT set, (set, set_ordlist, set_unordlist, set_bbbtree, set_tree234, și set_ctree234), acum a sprijini pliere pe seturi cu până la șase acumulatori. Au fost, de asemenea, adăugat Moduri care oferă acumulatorii unice și mai ales, unic pentru set ori.
  • Am făcut următoarele modificări la modulul serie de biblioteca standard:
  • Am adaugat funcțiile unsafe_elem / 2 și adăugați / 2.
  • Am adaugat predicatele svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, și membru / 2.
  • Am adaugat predicatele version_array.foldl2 / 6, version_array.foldr / 4, și version_array.foldr2 / 6 la biblioteca standard.
  • Am adaugat moduri semidet cu acumulatori unice și mai ales, unic pentru următoarele predicate:
  • 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
  • Am adaugat predicatul unsorted_aggregate2 / 6 la modulul de soluții de biblioteca standard.
  • Am adăugat câteva predicate și funcții pentru modulul cere biblioteca standard. Predicatele rău / 2 și îmi pare rău raport / 3 lipsa unei caracteristici, în timp ce predicatele neașteptate / 2 și neașteptate / 3 Raportați o eroare internă în cadrul programului; toate au versiuni funcționale prea. Predicatul aștepta / 3 apeluri neașteptate dacă o condiție nu este îndeplinită. Avem acum așteptăm / 4, precum și aștepta / 3. Pentru aștepta / 4, precum și aștepta / 3, prima și ultima argumente sunt starea de așteptat, și mesajul de eroare respectiv, dar cu aștepta / 4, există două argumente în mijloc pentru a specifica locația erorii (în mod normal numele modulului și a predicatului respectiv). De asemenea, a adaugat expect_not / 3 și expect_not / 4, care sunt ca aștepta / 3 și aștepta / 4, respectiv, cu excepția faptului că se așteaptă ca starea de a fi * * fals, nu este adevărat.

Ce este nou în versiunea 10.04.2:

  • Această versiune este o versiune bug-fix. O serie de probleme care au determinat compilator pentru a abandona au fost stabilite, unele operații RTTI rupte din clasa java au fost stabilite, și am adăugat o soluție pentru o problemă cu GCC versiunea 4.4.

Limitări :

  • Punerea în aplicare actual încă nu pune în aplicare în întregime în limba Mercur. Principalele limitări ale implementării curente sunt următoarele:
  • Nu permit aliasing definit în sistemul de modul. Fără aceasta, moduri parțial instanțiate sunt inutilizabile, și așa sunt imbricate moduri unice.
  • Compilatorul nu utilizează încă reutilizare structura sau compila timp de colectare a gunoiului pentru a exploata moduri unice.
  • Tipul și modul de inferență sunt un pic imperfectă.

  • În plus, s-au impus deciziile de design în acest implemenation următoarele limite:
  • Predicate și funcțiile pot avea cel mult aproximativ 1000 argumente.

  • termeni
  • de nivel superior poate avea cel mult aproximativ 500 de argumente.

Software similare

bin86
bin86

3 Jun 15

ChaiScript
ChaiScript

20 Feb 15

Comentarii la Mercury

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!