NPRG068 Programování v Haskellu

ZS 2020/21, 2/0 Zk, 3 kredity

Kontakt

kratochvil@ksi.mff.cuni.cz

Distanční výuka

Požadavky

Přesná pravidla a termíny budou oznámeny na první přednášce a zaznamenány ve slajdech.

Slajdy

PDF

Slajdy budou průběžně (bez varování) doplňovány.

Nějaké kusy zdrojového kódu ze slajdů na hraní jdou najít tady.

Průběh přednášek

Záznamy z přednášek jsou k dispozici online. Pokud se k vám nedostal link, napište mi.

1 (30.9.)
Úvod do funkcionálního programování, syntax Haskellu, typy, Curry-style funkce.
2 (7.10.)
Typové třídy, monoidy, funktory, aplikativní funktory, motivace pro monády. Funkce jako kontejnery na výsledky. Tradiční monády pro State, pohled dovnitř IO.
3 (14.10.)
Monadický parsing trochu víc zblízka. Balíčky a knihovny, cabal.
4 (21.10.)
Klíčové části standardní knihovny. Kontejnery, související typové třídy, funkcionální datové struktury.

Domácí úkoly

Zadání budou na GitHubu. Termíny jsou ve slajdech. Úkoly odevzdávejte do SISu, způsob odevzdání je popsaný ve slajdech i na GitHubu.

Zkouška

Zkouška bude probíhat jako rychlá kontrola obsahu domácích úkolů, případně jako doplnění chybějících částí. (V optimálním případě nebude potřeba doplňovat nic a zkouška bude velmi krátká.) Kontrolní a doplňující otázky se můžou týkat např. následujících témat:

  1. Typový systém Haskellu a typy metod základních typových tříd v Prelude, otázky podobné následujícím:
  2. Programování s funkcemi vyšších řádů a nekonečnými strukturami:
  3. Monády a povědomí o tom jak funguje standardní State a IO.
  4. Mírný přehled o standardních kontejnerech, běžných IO funkcích, fungování Haskellových threadů apod.
  5. Hrubý přehled o Curry-Howardově korespondenci typů a logiky.
  6. Fungování a hlavní myšlenky nejpoužívanějších knihoven, např.:

Literatura a užitečné odkazy