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..
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.. Ceci a permis a ses auteurs d'appeler Mercury « Le langage de programmation logique le plus rapide du monde ».
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 Fibonaccid'après : :- 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
Liens externes La page officielle Rosetta en Mercury sur le site des programmes littéraires Articles sur Mercury Mercury chez Stack Overflow
Catégorie:Langage de programmation logique