Mercury (langage)

Un article de Wikipédia, l'encyclopédie libre.

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]