A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Haskell je štandardizovaný funkcionálny programovací jazyk s voľnou sémantikou (lenivé vyhodnocovanie) pomenovaný po logikovi Haskellovi Currym. Bol vytvorený v 90. rokoch 20. storočia. Posledným polooficiálnym štandardom je Haskell 98, ktorý definuje minimálnu a portabilnú verziu jazyka využiteľnú na výuku alebo ako základ ďalších rozšírení. Jazyk sa rýchlo vyvíja, predovšetkým vďaka svojim implementáciám Hugs a GHC (pozri nižšie), ktoré predstavujú súčasný de facto štandard.
Medzi zaujímavé vlastnosti jazyka Haskell patrí podpora rekurzívnych funkcií a údajových štruktúr, pattern matching, expanzia zoznamov a strážne výrazy. Takáto kombinácia schopností umožňuje tvorbu funkcií, ktoré by sa v procedurálnych jazykoch implementovali ťažko, zatiaľ, čo v Haskelli sú triviálne. Haskell je v roku 2002 funkcionálny jazyk, na ktorom sa vykonáva najviac výskumu. Bolo vyvinutých niekoľko variantov: paralelizovateľné verzie od MIT a Glasgowskej univerzity, obe sa nazývajú Haskell; paralelnejšie a distribuovanejšie verzie nazývané Distributed Haskell (bývalý Goffin) a Eden; verzia implementujúca špekulatívne vyhodnocovanie nazývaná Eager Haskell a niekoľko objektovo orientovaných verzií: Haskell++, O'Haskell a Mondrian.
Existuje aj jazyk podobný Haskellu, ktorý ponúka nový spôsob podpory vývoja GUI nazývaný Concurrent Clean. Jeho najväčšou odchýlkou od Haskellu je použitie jedinečných typov a monáda.
Mark Jones vyvinul výučbovú verziu jazyka nazývanú Gofer. Bola nahradená systémom HUGS (Haskell User's Gofer System), pozri implementácie dolu.
Príklady
Definícia funkcie faktoriálu:
fac 0 = 1
fac n = n * fac (n - 1)
Iná definícia faktoriálu (používa funkciu product
zo štandardnej knižnice Haskellu):
fac n = product
Naivná implementácia funkcie vracajúcej n-tý prvok Fibonacciho postupnosti:
fib 0 = 0
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1)
Funkcia vracajúca čísla Fibonacciho postupnosti s lineárnou výpočtovou zložitosťou.
fibs@(_:rest) = 0 : 1 : (zipWith (+) fibs rest)
Predchádzajúca funkcia vytvorí nekonečný zoznam, čo je možné vďaka lenivému vyhodnocovaniu. Je možné ho implementovať ako
fib n = fibs !! n
(!!
je operátor, ktorý vráti n-tý prvok zoznamu).
Elegantný zápis triediaceho algoritmu quicksort:
qsort =
qsort (pivot:tail) =
qsort left ++ ++ qsort right
where
left =
right =
Implementácie
Nasledujúce implementácie celkom (alebo takmer celkom) vyhovujú štandardu Haskell 98 a sú distribuované pod open source licenciou. V súčasnosti neexistujú komerčné implementácie.
- Hugs je interpreter bajtkódu. Ponúka rýchly preklad programov a znesiteľnú rýchlosť spúšťania. Je vhodný predovšetkým na výučbové účely.
- Glasgow Haskell Compiler kompiluje do natívneho kódu niekoľkých rôznych počítačových architektúr a do jazyka C. GHC je pravdepodobne najpopulárnejšia implementácia a existuje preň pomerne veľké množstvo užitočných knižníc (napr. väzby na OpenGL).
- nhc98 je ďalším kompilátor bajtkódu, ale jeho programy bežia výrazne rýchlejšie ako s HUGS. Nhc98 sa zameriava na minimalizáciu použitia pamäte a preto je ideálny na použitie na starších počítačoch.
- HBC je ďalší kompilátor natívneho kódu. Jeho vývoj pred dlhším časom ustal, ale je stále použiteľný.
- Helium novším dialektom Haskellu. Zameriava sa na jednoduché naučenie. Momentálne mu chýbajú typové triedy, čo ho robí nekompatibilným s mnohými programami v Haskelle.
Rozšírenia
- O'Haskell je rozšírenie Haskellu, pridáva objektovo orientované vlastnosti a podporu pre konkurentné programovanie.
Externé zdroje
- Domovská stránka Haskellu (po anglicky)
- Haskell Wiki (po anglicky)
- Jemný úvod do Haskell 98 (po anglicky) (pdf formát)
- Evolúcia programátora Haskellu (po anglicky) (jemne humorný prehľad rozličných štýlov programovania dostupných v Haskelle)
- Online Bibliografia výskumu Haskellu (po anglicky)
- Humor Haskellu (po anglicky)
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
ABC (programming language)
Active Server Pages
Ada (programovací jazyk)
ALGOL
ALGOL 60
ALGOL 68
ALGOL W
APL (programovací jazyk)
App Inventor
AWK
BASIC (programovací jazyk)
Befunge
Brainfuck
C++
Ceylon (programovací jazyk)
COBOL
ColdFusion
C (programovací jazyk)
C Sharp
Dynamické HTML
Dynamo (programovací jazyk)
D (programovací jazyk)
Eiffel (programovací jazyk)
Fortran
Glide
Go (programovací jazyk)
Groovy
Haskell (programovací jazyk)
Imagine (programovací jazyk)
Intercal
Interface description language
Interpreter
Interpreter (programovanie)
JavaFX Script
Java (programovací jazyk)
Java ME
Jazyk symbolických inštrukcií
Karel (programovací jazyk)
Lisp
Logo (programovací jazyk)
Lua
MATLAB
Nízkoúrovňový programovací jazyk
Objective-C
Object Pascal
Pascal (programovací jazyk)
Perl
PL/SQL
Programovací jazyk
Prolog
Python (programovací jazyk)
Qore (programovací jazyk)
Ruby (programovací jazyk)
Rust (programovací jazyk)
R (programovací jazyk)
SAS (programovací jazyk)
Scheme (programovací jazyk)
Scilab
Scratch
Script-Fu
Sigma-kalkul
Simula
Smalltalk
Squeak
Structured Query Language
Swift
Unified Modeling Language
Visual Basic
Visual Basic for Applications
Zoznam programovacích jazykov
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk