Mercury (langage)

langage de programmation

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

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

Références modifier

  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