Mercury (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Mercury
Date de première version Voir et modifier les données sur Wikidata
Auteur Zoltan Somogyi
Dernière version 14.01.1 ()Voir et modifier les données sur Wikidata
Paradigmes Programmation logique
Typage Fort, statique
Influencé par Prolog
Système d'exploitation Multiplate-forme
Site web http://mercurylang.org/

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.

Mission Critical IT [1], une société de services en ingénierie informatique (SSII) belge, utilise Mercury depuis 2000 dans des applications commerciales.

Exemple[modifier | modifier le code]

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[modifier | modifier le code]

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

  1. a et b 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, no 1–3,‎ october–december 1996, p. 17–64 (DOI 10.1016/S0743-1066(96)00068-4, lire en ligne)
  4. d'après « Ralph Becket's Mercury tutorial » (ArchiveWikiwixArchive.isGoogleQue faire ?), consulté le 2013-04-13

Liens externes[modifier | modifier le code]