Ważnym aspektem programowania (funkcyjnego i nie tylko) jest kontrola nad
efektami obliczeniowymi takimi jak: wejście-wyjście, wyjątki, zmienny stan,
niedeterminizm itp. Dzięki kilku prostym technikom panowania nad efektami
można uzyskać kod czytelny, modularny i łatwy do testowania. Na seminarium
dowiemy się, jak pracować z efektami w praktyce i lepiej zrozumiemy je w
teorii. Skupimy się głównie na monadach i modnych obecnie efektach
algebraicznych. Proponowane tematy:
**Monady w programowaniu funkcyjnym**
* Monady i transformatory monad
* Monady wolne
* Monady kontynuacyjne i kogęstościowe
* Monady Reader, Writer, State, Update
* Monady jako modalności (przez izomorfizm Curry'ego-Howarda)
* Komonady
**Efekty algebraiczne**
* Modularna składnia i jej interpretacja (typy danych "à la carte")
* Programowanie z użyciem handlerów (wprowadzenie do języka Eff lub Frank)
* Programy polimorficzne względem efektów
* Efekty algebraiczne a typy zależne
**Inne aspekty programowania z efektami**
* Funktory aplikatywne
* Programowanie reaktywne (FRP)
* Systemy typów efektów
* Obliczenia kwantowe w językach funkcyjnych