clojure-italy 2021-10-21

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

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

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

le macros sono check at compile time con spec

non e un gran che, ma almeno ...

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

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

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

se non glieli specifichi mai

praticamente mai usato

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

cos'è il nil punning, per capire?

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

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.

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!

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

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

1