Haskell
Z Multimediaexpo.cz
Verze z 21. 10. 2010, 17:20
Haskell je standardizovaný funkcionální programovací jazyk používající líné vyhodnocování, pojmenovaný na počest logika Haskella Curryho. Jazyk se rychle vyvíjí, především díky svým implementacím Hugs a GHC.
Haskell je jazyk dodržující referenční transparentnost. To, zjednodušeně řečeno, znamená, že tentýž (pod)výraz má na jakémkoliv místě v programu stejnou hodnotu. Mezi další výhody tohoto jazyka patří přísné typování proměnných, které programátorovi může usnadnit odhalování chyb v programu. Haskell plně podporuje práci se soubory i standardními vstupy a výstupy, která je ale poměrně složitá kvůli zachování referenční transparentnosti. Jako takový se Haskell hodí hlavně pro algoritmicky náročné úlohy minimalizující interakci s uživatelem.
Obsah |
Historie
Jazyk byl navržen na konci 80. let 20. století skupinou vědců, kteří se snažili vytvořit otevřený standard funkcionálního programovacího jazyka s moderními vlastnostmi. Dále byl v 90. letech 20. století rozvíjen, hlavně v akademické sféře (motto: „avoid success at all costs“, tedy „vyhnout se úspěchu za každou cenu“) a později začal být známější i mimo ni, částečně díky online komunitě.[1] Posledním ustálenou verzí je revize Haskell 98, jež definuje minimální a přenositelný standard jazyka využitelný k výuce nebo jako základ dalších rozšíření.[2] Plánované zařazení některých rozšíření je pojmenováno jako Haskell′ (Haskell Prime).[3]
Příklady
Definice funkce faktoriálu:
fac 0 = 1 fac n = n * fac (n - 1)
Jiná definice faktoriálu (používá funkci product
ze standardní knihovny Haskellu):
fac n = product [1..n]
Naivní implementace funkce vracející n-tý prvek Fibonacciho posloupnosti:
fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1)
Eratosthenovo síto - jednoduchá implementace algoritmu pro nalezení všech prvočísel:
primes = es [2 ..] where es (p:t) = p : es [ n | n<-t, n`mod`p/=0 ]
Elegantní zápis řadicího algoritmu quicksort:
qsort [] = [] qsort (pivot:tail) = qsort left ++ [pivot] ++ qsort right where left = [y | y <- tail, y < pivot] right = [y | y <- tail, y >= pivot]
Implementace
Následující implementace zcela (nebo téměř zcela) vyhovují standardu Haskell 98 a jsou distribuovány pod open source licencí.
- Hugs ([1]) je interpret mezikódu (bajtkódu). Nabízí rychlý překlad programů a snesitelnou rychlost spouštění. Je vhodný především pro výukové účely.
- Glasgow Haskell Compiler (GHC, [2]). Glasgow Haskell Compiler umí překládat zdrojové kódy Haskellu do kódu závislého na architektuře počítače, případně do jazyka C.
- nhc98 ([3]) je dalším interpretem využívajícím mezikód, běh programů je znatelně rychlejší než u Hugsu. Nhc98 se zaměřuje na hospodárnou správu paměti, a je tak ideální pro využití na starších počítačích.
Reference
Externí odkazy
- Domovská stránka Haskellu
- Haskell.cz – o Haskellu v češtině
- Seriál Haskell a funkcionální programování
Náklady na energie a provoz naší encyklopedie prudce vzrostly. Potřebujeme vaši podporu... Kolik ?? To je na Vás. Náš FIO účet — 2500575897 / 2010 |
---|
Informace o článku.
Článek je převzat z Wikipedie, otevřené encyklopedie, do které přispívají dobrovolníci z celého světa. |