Accueil🇫🇷Chercher

Mercury (langage)

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[1].

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[2] - [3]. Ceci a permis a ses auteurs d'appeler Mercury "Le langage de programmation logique le plus rapide du monde" [1].


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 ([4]):

 :- 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

  1. The Mercury Project - Motivation
  2. The Mercury Project - Benchmarks
  3. (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 )
  4. d'après « Ralph Becket's Mercury tutorial »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?) (consulté le )

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.