Merkur (programovací jazyk)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 11. srpna 2016; kontroly vyžadují 4 úpravy .
Rtuť
Jazyková třída logické , funkční
Objevil se v 1995
Autor Zoltan Somogyi
Vývojář University of Melbourne
Přípona souboru .m
Uvolnění 01/22 (31. března 2022 ) ( 2022-03-31 )
Typový systém přísný , statický , polymorfní
Hlavní implementace Kompilátor Melbourne Mercury
Byl ovlivněn Prolog , Haskell
Licence GPL pro kompilátor, LGPL pro standardní knihovnu
webová stránka mercurylang.org

Mercury  je silně typovaný funkční logický programovací jazyk navržený k řešení následujících dvou problémů, které vznikají při používání klasického logického programovacího jazyka Prolog :

  1. problém s výkonem. Moderní implementace logických programovacích jazyků jsou výkonově horší než implementace programovacích jazyků imperativního typu .
  2. problém ladění. Implementace logických programovacích jazyků provádějí méně kontrol při kompilaci než implementace programovacích jazyků imperativního typu. To nutí programátora hledat chyby sám a bez výraznější pomoci debuggeru.

Jazyk byl vyvinut na University of Melbourne . První verzi vydali Fergus Henderson, Thomas Conway a Zoltan Somogyi 8. dubna 1995 .

Funkce

Syntaxe Mercury je částečně zděděna z Prologu, typový systém je podobný Haskell . Jedná se o čistě deklarativní jazyk, vývojáři z něj zcela odstranili všechny imperativní funkce, což umožnilo zlepšit možnosti optimalizace zabudované do kompilátoru . Jméno Merkur je dáno na počest boha rychlosti Merkura a odráží zaměření na získávání vysokorychlostních programů. Operace, které by se normálně vyhýbaly čistě deklarativnímu přístupu, jako je I/O , jsou vyjádřeny v Merkuru s deklarativními konstrukcemi používajícími lineární typy .

Implementace

Kompilátor jazyka Mercury je napsán v jazyce samotném. Než se kompilátor Mercury dokázal zkompilovat, byl použit jazyk Prolog . Je distribuován za podmínek licence GPL a funguje na všech moderních operačních systémech. Je možné přeložit kód do mnoha oblíbených programovacích jazyků, jako jsou: C , Java , Erlang , IL pro platformu .NET .

Od roku 2010 má Project Mercury 6měsíční cyklus vydávání, kde číslo hlavní verze odpovídá roku vydání, číslo vedlejší verze odpovídá měsíci, ve kterém začaly práce na vydání. Dřívější verze měly čísla jako 0.12, 0.13… a doba mezi vydáními stabilních verzí byla velmi dlouhá (asi 3 roky).

Kompilátor Mercury je distribuován na oficiálních stránkách ve zdrojovém kódu, uživatelé Windows mohou využít i neoficiální distribuci winmercury. Jedná se o praktický instalátor, který nainstaluje MinGW , kompilátor GCC a všechny potřebné soubory Mercury v zkompilované a nakonfigurované podobě. Obsahuje také soubor nápovědy HTML s užitečným obsahem a rejstříkem a také zásuvný modul pro editor Vim . Nejnovější sestavení Mercury k dnešnímu dni je 20.01.2.

Příklady

ahoj světe :

:- modul ahoj . :- rozhraní . : - import_module.io . :- pred main ( io : :di , io : :uo ) je det . :- realizace . hlavní (! IO ) :- io . write_string ( "Ahoj, světe!\n" , ! IO ).

Výpočet 10. Fibonacciho čísla (nejviditelnějším způsobem) [1] :

:- modul fib . :- rozhraní . : - import_module.io . :- pred main ( io : :di , io : :uo ) je det . :- realizace . :- import_module int . :- func fib ( int ) = int . fib ( N ) = ( pokud N =< 2 , pak 1 jinak fib ( N - 1 ) + fib ( N - 2 )). hlavní (! IO ) :- io . write_string ( "fib(10) = " , ! IO ), io . write_int ( fib ( 10 ), ! IO ), io . nl (! IO ). % Mohl by místo toho použít io.format("fib(10) =%d\n", [i(fib(10))], !IO).

Poznámky

  1. Na základě tutoriálu Ralpha Becketa Mercury Archivováno 21. září 2020 na Wayback Machine

Odkazy