NPRG068 Programování v Haskellu

ZS 2021/22, 2/0 Zk, 3 kredity

Kontakt

kratochvil@ksi.mff.cuni.cz

Distanční výuka

Forma výuky je prozatím prezenční, je ale možné, že formát semestru se přepne do distančního.

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

1 (30.9.)
Úvod do funkcionálního programování, syntax Haskellu, typy, Curry-style funkce, typové třídy, funktory. (ve slajdech cca do konce aplikativních funktorů, před první náznaky monád)
2 (7.10.)
Funkce jako kontejnery na výsledky. Typové třídy, monoidy, funktory, aplikativní funktory, motivace pro monády. Tradiční monády pro State, rychlý pohled dovnitř IO. (ve slajdech do konce úvodu, až k velkému středníku)
3 (14.10.)
Parsování pomocí monád (aka parsovací kombinátory). Balíčky a knihovny, cabal.
4 (bude 21.10.)
Klíčové součá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

Jak začít rychle:

Reference:

Kompletnější materiály:

...