This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-12-20
Channels
- # adventofcode (47)
- # announcements (3)
- # aws (29)
- # bangalore-clj (3)
- # beginners (63)
- # boot (2)
- # braveandtrue (40)
- # calva (34)
- # cider (37)
- # cljs-dev (8)
- # clojars (3)
- # clojure (45)
- # clojure-europe (2)
- # clojure-france (4)
- # clojure-india (2)
- # clojure-italy (44)
- # clojure-japan (4)
- # clojure-nl (39)
- # clojure-serbia (1)
- # clojure-spec (21)
- # clojure-uk (75)
- # clojurescript (28)
- # cursive (24)
- # data-science (3)
- # datomic (31)
- # emacs (13)
- # fulcro (35)
- # hoplon (21)
- # jobs-discuss (66)
- # nrepl (18)
- # off-topic (72)
- # pathom (35)
- # re-frame (20)
- # reagent (54)
- # shadow-cljs (35)
- # spacemacs (9)
- # specter (8)
- # sql (13)
- # testing (9)
- # tools-deps (21)
- # vim (3)
Giorno! È il talk-like-a-pirate day?
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?
non è prettamente un aspetto di Clojure, ma Om mi sembra stato surclassato da re-frame in termini di popolarità, o sbaglio?
mmmh, si’. Il problema e’ stato che om.next si e’ materializzato troppo lentamente ed una tonnellata di altri frameowrk sono emersi
Sia om che om.next sono troppo difficili da imparare
Troppo avanti per certi versi
E reframe è molto più semplice e ha una documentazione fantastica
Direi che reagent e’ probabilmente stato il primo responsabile del declino di om.*, poi sono arrivati gli altri
a me è il modello di re-frame che ha colpito. Dà un senso a una cosa per cui sono negato (disegnare interfacce)
Si infatti
Riesci a scrivere codice ai 90% puro praticamente, anche meglio di qualsiasi Backend
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.
o meglio, le threading macro di clojure hanno alcuni overlap superficiali con alcune istanze di monadi
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?
@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/
grazie mille @nilrecurring 🙂
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
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
fare parallelismi tra monadi e some->
/`for` etc penso faccia piu` confusione che altro
IMO uno ha bisogno di parallelismi in primo luogo, e distinzioni in secondo luogo, quindi penso sia utile menzionarlo
Sarebbe corretto dire che some->
e’ l’equivalente idiomatico di una null-checking monad in Clojure (fermo restando non e’ una monad)?
sono d'accordo che i parallelismi sono utili ma paragonare some->
a una monade rischia di far confondere il concetto con il risultato
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.
sarebbe piu` corretto dire che some->
e` un'operazione monadica piu` che dire che sia una monad
sono stato uno dei fortunati https://www.telegraph.co.uk/news/2018/12/20/gatwick-chaos-drones-cause-flights-cancelled-live-updates/
altri che dovevano andare in italia oggi?
io ci vado domenica ma parto da berlino 🙂