Mercury

Software screenshot:
Mercury
Dettagli del software:
Versione: 13.05.1
Data di caricamento: 15 Apr 15
Sviluppatore: Mercury Developers
Licenza: Libero
Popolarità: 11

Rating: 2.0/5 (Total Votes: 1)

linguaggi di programmazione logica sono stati intorno per più di venti anni. Nonostante i vantaggi previsti di un linguaggio di programmazione di altissimo livello basato su teorie ben sviluppate della logica più linguaggi di programmazione convenzionali (come C, C ++, Pascal e Ada) non hanno avuto un impatto significativo sul settore computer.
Il mercurio è un nuovo linguaggio di programmazione logica / funzionale, che unisce la chiarezza e l'espressività della programmazione dichiarativa con funzionalità avanzate di analisi e rilevamento degli errori statici.
Il mercurio è altamente ottimizzato algoritmo esecuzione garantisce efficienza di gran lunga al di sopra di sistemi di programmazione logica esistenti, e vicino ai sistemi di programmazione convenzionali.
Mercury affronta i problemi di sviluppo del programma su vasta scala, permettendo modularità, compilazione separata, e numerosi ottimizzazione / tempo dei compromessi

Cosa c'è di nuovo in questa versione:.

  • Questo risolve versione bugfix costruiscono problemi su Solaris e NetBSD e aggiunge il supporto per la scelta del compilatore C # in fase di configurazione.
  • I vari altri bug minori sono stati corretti.
  • Ci sono anche alcune aggiunte minori al libreria standard.

Cosa c'è di nuovo in versione 13.05:

  • Generazione di eseguibili a 64 bit in Windows è ora supportato.
  • tempi di compilazione per i programmi molto grandi sono stati migliorati.
  • sono state aggiunte diverse nuove ottimizzazioni di rappresentanza tipo.
  • Il debugger ha ora un supporto migliore per la gestione di chiamate cricche mutuamente ricorsive in pila.
  • Un legame alla biblioteca GLFW è stato aggiunto alla distribuzione extras.
  • Assemblee generati con il C # backend possono ora essere firmato con un nome sicuro.

Cosa c'è di nuovo in versione 11.01:

  • Abbiamo aggiunto due nuovi tipi di ambiti al linguaggio.
  • Un ambito introdotta da una delle nuove parole chiave require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous e require_failure, come dice il nome, richiede l'obiettivo all'interno del campo di applicazione per avere il determinismo data.
  • Un ambito introdotto dalla require_complete_switch parola richiede l'obiettivo all'interno del campo di applicazione, se è un interruttore sulla variabile denominata dal campo di applicazione, per essere un interruttore completo, ossia per avere armi per tutti i simboli di funzione nel tipo di acceso-on variabili.
  • Abbiamo aggiunto modalità semidet per hash_table.fold / 4 e version_hash_table.fold / 4.
  • Abbiamo aggiunto nuovi predicati e funzioni al modulo assoc_list. I predicati map_keys_only / 3 map_values_only / 3 e map_values ​​/ 3 complementare le funzioni omonimi. I predicati filtro / 3, negated_filter / 3, filtro / 4, di unione / 3, che hanno anche le versioni di funzione, fare lavori molto simili ai predicati con lo stesso nome nel modulo lista, ma fanno le operazioni rilevanti sui tasti, invece di tutta la elementi della lista.
  • Abbiamo spostato il modulo di valutazione pigra fuori della distribuzione extra e in un nuovo modulo di libreria standard chiamato `pigro '. E 'stato fatto anche backend-agnostico.
  • Abbiamo fatto delle modifiche al modulo di lista della libreria standard:
  • Abbiamo aggiunto una nuova list.member_index0 predicato / 3. È come list.member / 2, tranne che ci vuole anche un parametro che rappresenta l'indice a base zero dell'elemento all'interno della lista.
  • Abbiamo aggiunto un nuovo predicato list.map3_foldl / 7 che mappa su un elenco che produce tre liste e un valore piegato.
  • Abbiamo aggiunto modalità semidet con accumulatori unici per list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, e list.foldl6 / 14.
  • Abbiamo aggiunto i predicati dividono / 4 e divide_by_set / 4 al modulo tree_bitset della libreria standard.
  • Abbiamo aggiunto i predicati set_ctree234.member / 2 e set_ctree234.non_empty / 1. Abbiamo aggiungere la funzione set_ctree234.from_list / 1.
  • Abbiamo aggiunto il predicato set_bbbtree.count / 2 e la funzione set_bbbtree.count / 1. Questi sostituiscono il predicato set_bbbtree.size / 2 che è ora sconsigliato.
  • Abbiamo aggiunto il predicato set_ordlist.non_empty / 1.
  • Abbiamo aggiunto il predicato set_tree234.non_empty / 1 e la funzione set_tree234.from_list / 1.
  • Abbiamo aggiunto i predicati set_unordlist.non_empty / 1 e set_unordlist.count / 2, e la funzione set_unordlist.count / 1.
  • Tutti i moduli della libreria standard che implementano l'ADT set, (set, set_ordlist, set_unordlist, set_bbbtree, set_tree234, e set_ctree234), ora supporta ripiegando set con un massimo di sei accumulatori. Sono state aggiunte anche delle modalità che forniscono accumulatori unici e soprattutto univoci per il set piega.
  • Abbiamo fatto le seguenti modifiche al modulo matrice della libreria standard:
  • Abbiamo aggiunto le funzioni unsafe_elem / 2 e aggiungere / 2.
  • Abbiamo aggiunto i predicati svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, e membro / 2.
  • Abbiamo aggiunto i predicati version_array.foldl2 / 6, version_array.foldr / 4, e version_array.foldr2 / 6 per la libreria standard.
  • Abbiamo aggiunto modalità semidet con accumulatori unici e soprattutto univoci per le seguenti predicati:
  • 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
  • Abbiamo aggiunto il predicato unsorted_aggregate2 / 6 al modulo soluzioni della libreria standard.
  • Abbiamo aggiunto diverse predicati e funzioni al modulo richiedere della libreria standard. I predicati dispiace / 2 e dispiaciuto report / 3 l'assenza di una funzione, mentre i predicati inaspettati / 2 e inaspettati / 3 Segnala un errore interno nel programma; tutti hanno le versioni di funzione troppo. Il predicato aspetta / 3 chiamate inatteso se una condizione non è soddisfatta. Abbiamo ora si aspettano / 4 così come si aspettano / 3. Per aspettano / 4 così come si aspettano / 3, i primi e gli ultimi argomenti sono la condizione prevista e il messaggio di errore, rispettivamente, ma con aspettatevi / 4, ci sono due argomenti al centro per specificare la posizione dell'errore (normalmente il nome del modulo e del predicato rispettivamente). Abbiamo anche aggiunto expect_not / 3 e expect_not / 4, che sono come aspettare / 3 e aspettare / 4, rispettivamente, tranne che si aspettano la condizione di essere * * falso, non è vero.

Cosa c'è di nuovo in versione 10.04.2:

  • Questa versione è una release bug-fix. Una serie di problemi che hanno causato il compilatore di abortire sono stati risolti, alcune operazioni rotti RTTI in grado java sono stati corretti, e abbiamo aggiunto una soluzione per un problema con GCC versione 4.4.

Limitazioni :

  • L'implementazione corrente non ancora completamente implementare la lingua Mercury. Le principali limitazioni della implementazione attuale sono i seguenti:
  • Non permettiamo aliasing definita nel sistema modalità. Senza questo, le modalità parzialmente istanziati sono inutilizzabili, e così sono annidati modi unici.
  • Il compilatore non utilizza ancora la struttura riutilizzo o compilare in tempo garbage collection di sfruttare modi unici.
  • Tipo e modalità di inferenza sono un po 'imperfetto.

  • Inoltre, le decisioni di progettazione in questo implemenation hanno imposto i seguenti limiti:
  • I predicati e funzioni possono avere al massimo circa 1000 argomenti.

  • termini
  • di ordine superiore possono avere al massimo circa 500 argomenti.

Programmi simili

GNU Cobol
GNU Cobol

17 Feb 15

o42a
o42a

19 Feb 15

nesC
nesC

3 Jun 15

Trad4
Trad4

11 May 15

Commenti a Mercury

I commenti non trovato
Aggiungi commento
Accendere le immagini!