Clojurians
#clojure-italy
<
2018-12-20
>

This page is not created by, affiliated with, or supported by Slack Technologies, Inc.

manuel07:12:29

buondì gente.

mdallastella10:12:49

Giorno! È il talk-like-a-pirate day?

reborg10:12:20

No, era random…

reborg10:12:07

Riflettevo su alcuni aspetti di Clojure che dopo un periodo di attenzione sono diventati un po’ fuori moda (forse a torto, forse a ragione). core.logic ed STM. Vi viene in mente altro?

manuel10:12:59

non è prettamente un aspetto di Clojure, ma Om mi sembra stato surclassato da re-frame in termini di popolarità, o sbaglio?

reborg11:12:15

mmmh, si’. Il problema e’ stato che om.next si e’ materializzato troppo lentamente ed una tonnellata di altri frameowrk sono emersi

andrea.crotti11:12:12

Sia om che om.next sono troppo difficili da imparare

andrea.crotti11:12:27

Troppo avanti per certi versi

andrea.crotti11:12:01

E reframe è molto più semplice e ha una documentazione fantastica

reborg11:12:02

Direi che reagent e’ probabilmente stato il primo responsabile del declino di om.*, poi sono arrivati gli altri

helios11:12:04

w reagent e reframe (non aggiungo niente alla conversazione, ma tant'e')

manuel11:12:33

a me è il modello di re-frame che ha colpito. Dà un senso a una cosa per cui sono negato (disegnare interfacce)

andrea.crotti11:12:22

Riesci a scrivere codice ai 90% puro praticamente, anche meglio di qualsiasi Backend

andrea.imparato11:12:49

ho una domanda molto niubba per voi mega esperti, i monad posso essere equiparati alle threading macros in clojure? :thinking_face: . Stavo leggendo questo https://github.com/khinsen/monads-in-clojure/blob/master/PART1.md quando dice Monads are about composing computational steps into a bigger multi-step computation.

bronsa11:12:18

hanno leggeri overlap superficiali in come si usano

bronsa11:12:36

o meglio, le threading macro di clojure hanno alcuni overlap superficiali con alcune istanze di monadi

bronsa11:12:07

ma le monadi sono costrutti computazionali/composizionali, non lessicali, e generici

andrea.imparato11:12:19

ok quindi hai bisogno di scrivere un monad per ogni cosa specifica che vuoi fare mentre con le threading macros sono generiche e le puoi utilizzare con quali funzioni vuoi?

nilrecurring11:12:59

@andrea.imparato questo è un ottimo articolo che non tenta di spiegare le monadi, ma ti dimostra come sono dei costrutti generici e con lo stesso codice puoi risolvere tanti problemi diversi semplicemente “cambiando la monade che hai sotto” (ovvero il “contesto computazionale” come mi piace chiamarlo): https://philipnilsson.github.io/Badness10k/escaping-hell-with-monads/

andrea.imparato11:12:34

grazie mille @nilrecurring :slightly_smiling_face:

nilrecurring11:12:22

E l’esempio più vicino a una monade in clojure.core è some->, che si usa per scappare dal “null-checking hell” menzionato dall’articolo di sopra

bronsa11:12:23

eh ma non e` una monade.. e` semplicemente "come se" il codice fosse eseguito attraverso una maybe-like monad e le function call sostituite da bind impliciti

bronsa11:12:44

fare parallelismi tra monadi e some->/`for` etc penso faccia piu` confusione che altro

nilrecurring11:12:37

IMO uno ha bisogno di parallelismi in primo luogo, e distinzioni in secondo luogo, quindi penso sia utile menzionarlo

reborg11:12:32

Sarebbe corretto dire che some-> e’ l’equivalente idiomatico di una null-checking monad in Clojure (fermo restando non e’ una monad)?

bronsa12:12:02

sono d'accordo che i parallelismi sono utili ma paragonare some-> a una monade rischia di far confondere il concetto con il risultato

reborg12:12:32

Poi da li’ puoi convincere l’haskeller che Clojure non ha vere monad (non supportate dal core language), ma ha altri idiomi per risolvere problemi simili (e.g. macros). Sto solo cercando di capire.

bronsa12:12:40

sarebbe piu` corretto dire che some-> e` un'operazione monadica piu` che dire che sia una monad

bronsa12:12:05

sembrano tecnicismi semantici ma la differenza e` sostanziale

bronsa12:12:17

per me, almeno

reborg12:12:28

ok. So quanto fiscali diventano gli haskeller se non usi le parole giuste :troll:

reborg12:12:18

C’e’ supporto monadico nativo in ocaml?

bronsa13:12:37

ci sono un paio di monadi con la stdlib ufficiale (maybe, result)

bronsa13:12:51

ma non c'e` sintassi tipo do notation

bronsa13:12:59

ne` una libreria IO monadica

bronsa13:12:04

ocaml e` molto piu` impuro di haskell

bronsa13:12:59

c'e` una proposal per aggiungere do-like notation in versioni future, meh

andrea.crotti13:12:35

altri che dovevano andare in italia oggi?

andrea.imparato13:12:20

io ci vado domenica ma parto da berlino :slightly_smiling_face:

reborg13:12:24

Boh, ma se prendessero una parabola a microonde e puntassero il drone? Viene giu’ come un caco.