Fork me on GitHub
#clojure-poland
<
2017-11-28
>
jaen00:11:17

W Clojure? No idea, nie próbowałem jeszcze czegoś takiego zaimplementować.

jaen00:11:34

Ale bardzo ciekawie wygląda toto ze Scali - http://frees.io/

jaen00:11:08

Od jakiegoś czasu mamy na Śląsku spotkania programistów funkcyjnych (aż nie wierzę) i jutro właśnie ktoś ma o tym prezentację, więc chętnie posłucham.

jaen00:11:19

Ale pierwszy guess z brzegu to zrobienie makra które symbole operacji danej algebry podmienia na coś, co zresolvuje tą operację w danym kontekście (dynamic binding z mapą symbol -> interpretacja?). Albo po prostu pisanie cytowanymi listami (tylko to na pewno mniej wygodne jak się manualnie robi). Albo tagowanie operacji tagged literals?

jaen00:11:28

Chociaż każda opcja brzmi na swój sposób trochę ułomnie

jaen00:11:06

O, albo pisanie kodu a'la hiccup, keyword reprezentuje operację, kontekst dostarcza ich interpretacji. Tylko w sumie to też głupi pomysł, bo by wymagało reimplementacji rzeczy typu conditionale czy pętle, which is dumb.

jaen00:11:28

Tak w kwestii nieimplementacyjnej to bardzo mi się podobał ten artykuł - https://deque.blog/2017/07/06/hexagonal-architecture-a-less-declarative-free-monad/

jaen00:11:38

Piszą w nim o analogii między sześciokątem o free monads

nooga15:11:25

cos podobnego mi sie kolatalo po glowie swego czasu

nooga15:11:46

ale jak zaczalem w tym grzebac to dotarlo do mnie ze w sumie to pisze jezyk programowania z interpreterem

nooga15:11:00

i to nie ma zadnego sensu

nooga15:11:18

kiedy ma sie dobry jezyk programowania in the first place

nooga15:11:56

chyba trampoliny mi wystarcza

nooga15:11:55

a wlasnie probowalem zrobic taki “funkcyjny hexagon”

jaen22:11:56

Znaczy, to trochę ma sens chyba, bo jednak np. taki program we free monadzie możesz łatwo przenosić mię∂zy interpreterami (to trochę jak DI - inny do testów, inny do bazy SQLowej, inny do bazy w pliku czy coś) i je komponować i ograniczasz też możliwość popełnienia błędu, ograniczając możliwe operacje, ale może rzeczywiście nie jest to taki duży sens w dynamicznym języku jak i tak nie możesz typecheckować poprawności programu. Nie wiem. It sounds enticing, ale nie jestem pewien czy by się to sensownie wpasowało w Klożer.