Miranda (programovací jazyk)
Author
Albert FloresMiranda je v informatice čistě funkcionální programovací jazyk s líným vyhodnocováním, který navrhl David Turner jako nástupce jeho předchozích programovacích jazyků SASL a KRC, které využívají určitých konceptů jazyků ML a Hope. Obchodní značku Miranda vlastní Firma Research Software Ltd. of England. Miranda byl prvním čistě funkcionálním jazykem, který byl komerčně podporován.
Řešení většiny učebnicových problémů je v Mirandě kratší a jednodušší než ve většině tradičních programovacích jazyků (možná kromě APL). Uživatelé Mirandy mohou rychleji psát spolehlivější kódy, než s předchozími programovacími jazyky. +more Miranda byla vydána v roce 1985 jako rychlý interpret pro unixové operační systémy s následnými vydáními v letech 1987 a 1989. Haskell je pozdější nástupce Mirandy a v mnoha směrech se jí podobá.
Popis
Program (resp. skript) je v Mirandě množinou rovnic, které definují různé matematické funkce a algebraické datové typy. +more Slovo množina je zde důležité, protože v podstatě nezáleží na pořadí jednotlivých rovnic a není nutné definovat předcházející entitu k jejímu použití.
Komentáře se uvádějí za dvojicí znaků || a platí až do konce řádku. Alternativní konvencí pro komentáře pak forma, kde každý řádek je považován za komentář, kromě řádků začínajících znakem >.
Základní datové typy jsou char, num a bool. Znakový řetězec je prostý seznam znaků, zatímco num je podle potřeby převáděn mezi celými čísly (která jsou nastavena implicitně) nebo reálnými čísly s plovoucí desetinnou čárkou.
Dalším datovým typem jsou Tuples, což jsou sekvence elementů, které se mohou lišit datovým typem. Tuples odpovídají například datovému typu záznam v jazyce Pascal. +more Výčet elementů je uzavřen mezi kulatými závorkami a jednotlivé elementy jsou odděleny čárkami:.
this_employee = ("Folland, Mary", 10560, False, 35)
Nejvíce používanou datovou strukturou v Mirandě je však seznam. Výčet prvků je opět oddělen čárkami, je ale uzavřen mezi závorky hranaté a všechny prvky musí být stejného typu:
week_days = ["Mon","Tue","Wed","Thur","Fri"]
Pro výčet prvků seznamu také existuje několik zkratek, které ovšem můžeme použít jen v případě, že se jedná o aritmetickou řadu, s konkrétní inkrementací, která je větší než jedna:
fac n = product [1..n] odd_sum = sum [1,3..100]
Více důležitým a silným nástrojem pro tvorbu číselných seznamů jsou takzvané „list comprehensions“ (dříve známé jako „ZF expressions“), které jsou tvořený dvěma základními parametry: výrazem a prvky pro které daný výraz platí:
squares = [ n * n | n
Ukázka
Následující kód určuje soubor všech podmnožin z množiny celých čísel:
subsets [] = [[]] subsets (x:xs) = [[x] ++ y | y
Toto je pak ukázka výše zmíněného literate scriptu obsahující funkci primes, která vrací seznam všech prvočísel. V takzvaném „literate script“ jsou všechny řádky, které nezačínají znakem > považovány za komentáře:
> || The infinite list of all prime numbers, by the sieve of Eratosthenes.
The list of potential prime numbers starts as all integers from 2 onwards; as each prime is returned, all the following numbers that can exactly be divided by it are filtered out of the list of candidates.
> primes = sieve [2..] > sieve (p:x) = p : sieve [n | n
Reference
Externí odkazy
[url=http://miranda.org.uk]Domovská stránka Mirandy[/url]
Kategorie:Programovací jazyky Kategorie:Funkcionální jazyky Kategorie:Deklarativní programovací jazyky