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
Date de première version
Paradigmes Programmation logique
Auteur Zoltan Somogyi
Dernière version 20.06 (20 juin 2020)
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

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.orgWikiwixArchive.isGoogle • Que faire ?) (consulté le )

Liens externes

  • Portail de la programmation informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.