Aller au contenu
Wikipédia l'encyclopédie libre

Mercury (langage)

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

Pour les articles homonymes, voir Mercury.

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

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.

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. ↑ « Release 22.01.9 », (consulté le )
  2. 1 2 (en) « The Mercury Project - Motivation », sur mercurylang.org.
  3. ↑ (en) « The Mercury Project - Benchmarks », sur mercurylang.org.
  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.org • Wikiwix • Que faire ?) (consulté le )

Liens externes

[modifier | modifier le code ]
v· m
Concurrents
Déclaratifs
Fonctionnels
Impératifs
Orientés objet

AltStyle によって変換されたページ (->オリジナル) /