Mercury (langage)
Pour les articles homonymes, voir Mercury.
| Mercury | ||
| Logo. | ||
| Date de première version | Voir et modifier les données sur Wikidata | |
|---|---|---|
| Paradigmes | Programmation logique | |
| Auteur | Zoltan Somogyi | |
| Dernière version | 22.01.9 ()[1] Voir et modifier les données sur Wikidata | |
| Typage | Fort, statique | |
| Influencé par | Prolog | |
| Système d'exploitation | Multiplate-forme | |
| Licence | Licence publique générale GNU Voir et modifier les données sur Wikidata | |
| Site web | http://mercurylang.org | |
| Extension de fichier | mVoir et modifier les données sur Wikidata | |
| modifier | ||
Mercury est un langage de programmation fonctionnel et surtout logique, développé à l'Université de Melbourne, Australie. Mercury est déclaratif. Il a été inspiré par Prolog (pour la partie logique) et, dans une moindre mesure, Haskell pour la partie fonctionnelle[2] .
Mercury a une syntaxe et un mode de fonctionnement proches du langage Prolog. Cependant, il permet l'addition de types et de modes qui guident le compilateur dans la génération de code efficace[3] ,[4] . Ceci a permis a ses auteurs d'appeler Mercury « Le langage de programmation logique le plus rapide du monde »[2] .
Mercury n'inclut pas le « cut » et les entrées-sorties de Prolog, car elles ne sont pas déclaratives. En Mercury, le code non déclaratif doit être explicitement marqué comme tel. Les entrées-sorties utilisent un système de types linéaire.
Exemple
[modifier | modifier le code ]Calcul des nombres de Fibonacci [5] :
:- module fib. :- interface. :- import_module io. :- pred main(io::di, io::uo) is det. :- implementation. :- import_module int. :-func fib(int) = int. fib(N) = (if N =< 2 then 1 else fib(N - 1) + fib(N - 2)). main(!IO) :- io.write_string("fib(10) = ", !IO), io.write_int(fib(10), !IO), io.nl(!IO). % Could instead use io.format("fib(10) = %d\n", [i(fib(10))], !IO).
On y voit les modes (di, uo, det) et les types (int).
Voir aussi
[modifier | modifier le code ]- Alice
- Logtalk
- Oz et son compilateur Mozart.
- Visual Prolog
Références
[modifier | modifier le code ]- ↑ « Release 22.01.9 », (consulté le )
- 1 2 (en) « The Mercury Project - Motivation », sur mercurylang.org.
- ↑ (en) « The Mercury Project - Benchmarks », sur mercurylang.org.
- ↑ (en) Zoltan Somogyi, « The execution algorithm of Mercury: an efficient purely declarative logic programming language », Journal of Logic Programming, vol. 29, nos 1–3, october–december 1996, p. 17–64 (DOI 10.1016/S0743-1066(96)00068-4 , lire en ligne, consulté le )
- ↑ d'après « Ralph Becket's Mercury tutorial »(Archive.org • Wikiwix • Que faire ?) (consulté le )
Liens externes
[modifier | modifier le code ]- La page officielle (en)
- Rosetta en Mercury (en)
- sur le site des programmes littéraires (en)
- Articles sur Mercury (en)
- Mercury chez Stack Overflow (en)
| Concurrents | |
|---|---|
| Déclaratifs | |
| Fonctionnels | |
| Impératifs | |
| Orientés objet | |