Mercury (langage)
From Wikipedia, the free encyclopedia
| Mercury | ||
| Date de première version | ||
|---|---|---|
| Paradigmes | Programmation logique | |
| Auteur | Zoltan Somogyi | |
| Dernière version | 22.01.8 ()[1] | |
| Typage | Fort, statique | |
| Influencé par | Prolog | |
| Système d'exploitation | Multiplate-forme | |
| Licence | Licence publique générale GNU | |
| Site web | http://mercurylang.org | |
| Extension de fichier | m | |
| 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).