Mercury (langage)

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.8 ()[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 GNUVoir et modifier les données sur Wikidata
Site web http://mercurylang.org
Extension de fichier mVoir et modifier les données sur Wikidata

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]

Références[modifier | modifier le code]

  1. a et b « Release 22.01.8 », (consulté le )
  2. a et b The Mercury Project - Motivation
  3. The Mercury Project - Benchmarks
  4. (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 )
  5. d'après « Ralph Becket's Mercury tutorial »(Archive.orgWikiwixArchive.isGoogleQue faire ?) (consulté le )

Liens externes[modifier | modifier le code]