Procházet otázky :: SZZ na MFF UK

#

- Hlavní strana
- Okruhy
- Projít
- Stáhnout
- Co je potřeba
- Chci přispět
- Kredity

Hledat:

## Prohlížení státnicových textů

### Haskell

Haskell je standardizovaný funkcionální programovací jazyk používající zkrácené vyhodnocování, pojmenovaný na počest logika Haskella Curryho. Byl vytvořen v 80. letech 20. století. Posledním polooficiálním standardem je Haskell 98, který definuje minimální a přenositelnou verzi jazyka využitelnou k výuce nebo jako základ dalších rozšíření. Jazyk se rychle vyvíjí, především díky svým implementacím Hugs a GHC (viz níže).

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.

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)

Elegantní zápis řadící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]

TODO: popsat stráže (případy, otherwise), seznamy, řetězení, pattern matching u parametrů funkcí, lok. definice (where, let) - patří to sem?