fp-wroc #21
Efekty algebraiczne i ich handlery
Często wymienianą zaletą programowania funkcyjnego jest to, że czyste obliczenia (czyli takie, w których nie plączą się pod nogami efekty takie jak mutowalny stan, wyjątki, wejście/wyjście, wielowątkowość itp.) zapewniają kod bardziej modularny, z mniejszą liczbą błędów, łatwiejszy do testowania i wielokrotnego użycia. Ale nie oszukujmy się: w prawdziwym kodzie musimy i chcemy używać efektów. A skoro tak, to róbmy to z głową. Liczni mądrzy ludzie od wielu dekad próbują zaproponować nam różne sposoby panowania nad efektami tak, by mieć swobodę wyrazu nie tracąc zalet programowania funkcyjnego, np. niesławne monady w Haskellu.
Ta prezentacja będzie o nowym pomyśle: efektach algebraicznych.
Pozwalają one swobodnie definiować własne efekty, w naturalny sposób
programować z wieloma efektami jednocześnie (bez potrzeby niewygodnych i nieczytelnych transformatorów monad) i to wszystko w klasycznym ML-owym stylu (bez potrzeby pisania w imperatywnym "monadycznym" stylu). Nic dziwnego, że efekty algebraiczne są intensywnie badane i rozwijane na całym świecie, a i my na Uniwersytecie Wrocławskim mamy w tym swój skromny udział.
Prezentacja nie wymaga wcześniejszej wiedzy o efektach, a już na pewno nie trzeba wiedzieć nic o monadach, ani znać się na egzotycznych teoriach matematycznych.
Bio:
Maciej jest pracownikiem naukowym w Instytucie Informatyki Uniwersytetu Wrocławskiego. Wcześniej pracował na Uniwersytecie w Leuven (Belgia), a jeszcze wcześniej na Uniwersytecie w Oksfordzie (Anglia). Jego ulubionym językiem programowania jest Haskell, ale z nadzieją (i pewną dozą zniecierpliwienia) czeka na nadejście kolejnej generacji funkcyjnych języków programowania.