Mercury (langage)
![Page d’aide sur l’homonymie](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Logo_disambig.svg/20px-Logo_disambig.svg.png)
Pour les articles homonymes, voir Mercury.
Mercury | ||
![]() | ||
Date de première version | ![]() | |
---|---|---|
Paradigmes | Programmation logique | |
Auteur | Zoltan Somogyi | |
Dernière version | 22.01.8 ()[1]![]() | |
Typage | Fort, statique | |
Influencé par | Prolog | |
Système d'exploitation | Multiplate-forme | |
Licence | Licence publique générale GNU![]() | |
Site web | http://mercurylang.org | |
Extension de fichier | m![]() | |
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
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
- Alice
- Logtalk
- Oz et son compilateur Mozart.
- Visual Prolog
Références
- ↑ a et b « Release 22.01.8 », (consulté le )
- ↑ a et b The Mercury Project - Motivation
- ↑ The Mercury Project - Benchmarks
- ↑ (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 • Archive.is • Google • Que faire ?) (consulté le )
Liens externes
- 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)
v · m | |
---|---|
Concurrents |
|
Déclaratifs |
|
Fonctionnels |
|
Impératifs | |
Orientés objet |
|
Portail de la programmation informatique