Mercury (langage)

From Wikipedia, the free encyclopedia

Date de première versionVoir et modifier les données sur Wikidata
AuteurZoltan Somogyi
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.

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

Références

Liens externes

Related Articles

Wikiwand AI