clojure-italy

2021-10-21T07:14:51.002200Z

Schema /spec /malli fanno solo check a run time, anche se adesso tools tipo clj kondo stanno diventando sempre più sofisticati e riescono a dare parecchie type inference

2021-10-21T07:15:51.003700Z

Quindi mah a me perlomeno non manca troppo un type system, il nil punning my ha fatto incazzare molte più volte

2021-10-21T07:17:02.005600Z

Ma in alcuni progetti usiamo anche la libreria cats, che ti dà varie monadi & co e non sono convinto sia una buona idea usarla in clojure

mpenet 2021-10-21T08:23:50.006200Z

le macros sono check at compile time con spec

mpenet 2021-10-21T08:24:50.007Z

non e un gran che, ma almeno ...

2021-10-21T09:24:54.007600Z

non l'ho mai visto fare, ma si potrebbe essere un opzione

mpenet 2021-10-21T09:31:54.008600Z

l'ho fa con let/defn/ns per esempio

2021-10-21T09:32:38.009200Z

ah vabbeh si ma mica ti controlla che i tipi sono giusti

2021-10-21T09:32:43.009700Z

se non glieli specifichi mai

2021-10-21T09:32:55.010300Z

ah con fdef si ok

2021-10-21T09:33:04.011Z

praticamente mai usato

mpenet 2021-10-21T09:33:17.011600Z

io si, per un alternativa a try, tipo try+

Pagoda 5B 2021-10-21T11:12:54.013300Z

cos'è il nil punning, per capire?

Carlo 2021-10-21T13:28:39.014200Z

https://lispcast.com/nil-punning/

Carlo 2021-10-21T13:29:19.014500Z

Lo linko perche' neanche a me da' fastidio in clojure, mentre in altri linguaggi che lo declinano diversamente (tipo java, o c++) e' un incubo

reborg 2021-10-21T15:59:09.015800Z

Posso argomentare che per come e' implementato in Clojure, nil non e' molto diverso da un Option type. nil e' essenzialmente polimorfico e si comporta diversamente in base al contesto in cui e' usato. Poi confermo che per il fatto che e' piu' una convenzione che un meccanismo del compilatore, ci sono certe parti in Clojure dove non e' decorato di alcun significato aggiuntivo.

reborg 2021-10-21T16:02:24.016Z

Clojure e' un capolavoro di tradeoffs e non e' necessariamente consistente in ogni sua parte. Questo ha consentito al linguaggio di avere un minimo di popolarita', perche' i tradeoffs sono necessari per renderlo pratico e veloce nell'uso quotidiano. Poi a volte ti imbestialisce!

Carlo 2021-10-21T16:52:03.016200Z

sono totalmente d'accordo che per le scelte fatte nil feels like an option type e riuscire a fare questo a partire dai null pointers lo trovo veramente segno di ottimo design

Andrea Imparato 2021-10-21T12:37:19.014Z

le cose nil fanno un baffo a clojure 😄 tutte le funzioni funzionano anche su nil senza problemi

1