IB016 Seminář z funkcionálního programování

Fakulta informatiky
jaro 2022
Rozsah
1/1/0. 2 kr. (plus ukončení). Ukončení: z.
Vyučující
Mgr. et Mgr. Vladimír Chlup (přednášející)
Mgr. Adam Matoušek (přednášející)
RNDr. Vladimír Štill, Ph.D. (přednášející)
Mgr. František Bráblík (pomocník)
Mgr. Henrieta Micheľová (pomocník)
Garance
RNDr. Vladimír Štill, Ph.D.
Katedra teorie programování – Fakulta informatiky
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
St 16. 2. až St 11. 5. St 12:00–13:50 B130
Předpoklady
IB015 Neimperativní programování
Pro zapsání do kursu stačí mít znalost Haskellu v rozsahu předmětu IB015 Neimperativní programování a kladný vztah k funkcionálnímu programování.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Předmět si smí zapsat nejvýše 36 stud.
Momentální stav registrace a zápisu: zapsáno: 14/36, pouze zareg.: 0/36, pouze zareg. s předností (mateřské obory): 0/36
Mateřské obory/plány
Cíle předmětu
Studenti předmětu si podstatně rozšíří své znalosti funkcionálního programování. Po absolvování kursu by měli být schopni řešit netriviální programátorské problémy s pomocí Haskellu a získat přehled o praktických využitích tohoto funkcionálního jazyka.
Výstupy z učení
Student bude po absolvování předmětu schopen:
— napsat pokročilejší Haskellový program o cca 100 až 200 řádcích;
— zadaný problém analyzovat a vhodně funkcionálně dekomponovat;
— používat podpůrné nástroje pro vývoj v Haskellu, jako je správce balíků Cabal, repositář balíků Hackage, linter HLint a testovací framework QuickCheck;
— dokázat popsat teoretické funkcionální koncepty;
— mít představu o některých pokročilejších funkcionálních technikách používaných v praxi.
Osnova
  • Pokročilá syntaxe, systém modulů, vlastní typové třídy, pokročilé datové struktury.
  • Systém balíčků (Hackage/Stackage), podpůrné nástroje (Cabal, HLint, Haddock).
  • Funktory, aplikativní funktory, monády.
  • Automatické generování testů dle specifikace (QuickCheck).
  • Vstup a výstup v Haskellu, zpracování chyb a výjimek (Maybe, Either, výjimky, chybové stavy).
  • Pologrupy, monoidy, třídy Foldable a Traversable.
  • Vyhodnocovací strategie (lenost vs. striktnost).
  • Pokročilé techniky procházení datových struktur (Zippers, Lens).
  • Monadické parsování (Parsec).
  • Monády pro sdílený zápis, čtení a udržování stavu (Writer, Reader, State).
  • Transformátory monád (MaybeT, ErrorT).
  • Práce s řetězci a další užitečná rozšíření v GHC.
  • Využití Haskellu v praxi.
Literatura
  • LIPOVAČA, Miran. Learn You a Haskell for Great Good!: A Beginner's Guide. First Edition. San Francisco, CA, USA: No Starch Press, 2011, 400 s. ISBN 978-1-59327-283-8. URL info
  • O'SULLIVAN, Bryan, John GOERZEN a Don STEWART. Real World Haskell. First Edition. O'Reilly Media, Inc., 2009, 670 s. ISBN 978-0-596-51498-3. URL info
Záložky
https://is.muni.cz/ln/tag/FI:IB016!
Výukové metody
Cvičení kombinující výklad a samostatné programování; domácí úlohy.
Metody hodnocení
Podmínkou pro získání zápočtu je získání dostatečného množství bodů z domácích úloh. Účast na cvičeních je nepovinná, ale důrazně doporučená.
Navazující předměty
Informace učitele
https://is.muni.cz/auth/el/1433/jaro2020/IB016/index.qwarp
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2010, jaro 2011, jaro 2012, jaro 2013, jaro 2015, jaro 2016, jaro 2017, jaro 2018, jaro 2019, jaro 2020, jaro 2021, jaro 2023, jaro 2024, jaro 2025.