Upravljanje (side) efektima


Details
Konačno dugo iščekivani efekti na Lambdi. Tema koju će Luka prezentirati ima čak spomena i u biblijskoj OOP literaturi - Design Patterns od GoF, pod nazivom Interpreter Pattern. Kako je taj dio prihvaćen odlično je dočarao Rúnar Bjarnason sa komentarima iz tog doba. :)
https://youtu.be/hmX2s3pe_qk?t=2m06s
Vidimo se na još jednom ugodnom druženju, mjesto sastanka je Five koji nas opet ljubazno ugošćuje u svom fancy lounge-u. Ante i svi koji žele doći trebaju biti u 18h u Heinzelovoj 33. Na ulazu je porta pored koje se ide lijevo nekoliko stepenica pa ponovo lijevo.
Drago mi je da imamo priliku čuti nekoga kome Haskell nije samo zanimacija, već iza sebe ima višegodišnje profesionalno iskustvo + naravno ovaj dio hobija prije toga, koji je kao nekakvo pravilo za Haskell koje svi prolaze. Bez dodatnog duljenja slijedi Lukina najava.
---
Jedan od glavnih mehanizama kojim funkcijski programeri održavaju kvalitetu koda je kontrola side effectova. Haskell je poznat, ako ne i notoran, po korištenju IO monada kojim odvajamo pure funkcije od onih koje utječu na vanjski svijet.
Iako je takvim pristupom već drastično precizniji od mnogih drugih jezika, možemo i bolje. Ipak nisu svi efekti jednaki. Ako naša funkcija treba mogućnost čitanja s diska, ne želimo joj implicitno dopustiti da, npr., šalje HTTP requestove.
Libraryji za upravljanje efektima nam omogućuju preciznu, deklarativnu kontrolu nad time što naše funkcije sve mogu raditi. Uz samo deklariranje, također dobivamo i mogućnost korištenja različitih implementacija nekog efekta bez da mijenjamo postojeći kod, analogno dependency injectionu.
Kroz live coding session na praktičan način ćemo motivirati dizajn jednog od takvih libraryja: simple-effects. Prikazat ćemo put od impure koda do konačne verzije koja deklarativno specificira svoje efekte te koristi više različitih implementacija za iste.

Upravljanje (side) efektima