**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 [1..n]

```

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 ++ [pivot] ++ qsort right
 where
 left = [y | y <- tail, y < pivot]
 right = [y | y <- tail, y >= pivot]

```

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é odkazy
--------------

  

* Domovská stránka Haskellu (po anglicky)
* Haskell Wiki Archivované 2005-05-07 na Wayback Machine (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 Archivované 2008-09-15 na Wayback Machine (po anglicky)
* Humor Haskellu Archivované 2005-03-24 na Wayback Machine (po anglicky)

| * z
* d
* u
Významné programovacie jazyky |
| --- |
| 
* Ada
* ALGOL
* APL
* AWK
* BASIC
* C
* C++
* C#
* COBOL
* D
* Eiffel
* Erlang
* F#
* Forth
* Fortran
* Go
* Haskell
* IDL
* Java
* JavaScript
* JSI
* Kotlin
* Lisp
* Logo
* Lua
* ML
* Objective-C
* Object Pascal (Delphi)
* Pascal
* Perl
* PHP
* PL/I
* PL/M
* PL/SQL
* Prolog
* Python
* R
* Ruby
* Rust
* SAS
* Scratch
* sh
* Scheme
* Simula
* Smalltalk
* SQL
* Swift
* Visual Basic

 |