This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-10-25
Channels
- # 100-days-of-code (6)
- # announcements (4)
- # aws (2)
- # beginners (151)
- # boot (1)
- # calva (1)
- # cider (19)
- # clara (47)
- # cljdoc (9)
- # cljs-dev (25)
- # clojars (18)
- # clojure (151)
- # clojure-canada (1)
- # clojure-conj (1)
- # clojure-dev (17)
- # clojure-italy (42)
- # clojure-nl (34)
- # clojure-spec (67)
- # clojure-uk (125)
- # clojurescript (163)
- # core-async (106)
- # cursive (19)
- # data-science (11)
- # datomic (9)
- # duct (2)
- # figwheel (1)
- # figwheel-main (6)
- # fulcro (97)
- # graphql (9)
- # instaparse (4)
- # jobs (6)
- # jobs-discuss (21)
- # leiningen (62)
- # mount (23)
- # off-topic (16)
- # re-frame (15)
- # reagent (16)
- # reitit (5)
- # remote-jobs (1)
- # ring-swagger (9)
- # shadow-cljs (176)
- # tools-deps (102)
- # unrepl (3)
Giorno
ma il talk di Hickey a clojure/conj si chiama "Maybe Not"? Spero non ripeta di nuovo il suo parere sui tipi ma che ci sia ben di più dietro.
sì, siccome è un pezzo che la tira avanti con sta storia, speravo in qualcosa di nuovo.
@manuel puo’ essere che nella nuova versione di spec si sia reinventato il concetto di maybe. Dove sia poi arrivato con questo non lo so. Tutte congetture al momento…
Amo quel “reinventato” 😄
“riscoperto”
eh, ma son ben contento di sentire qualcosa di costruttivo. Lamentavo il fatto che l'ennesimo rant sui tipi non porta da nessuna parte
d’accordo, non mi interessano i rant nemmeno a me… neanche fossimo in guerra con i cugini tipati
Sarei più interessato a un meta-talk in quel caso: motivazioni per le quali pensa che sia una crociata interessante da intraprendere
voi come gestite la questione dei tipi cmq in produzione? Sono curioso 🙂
(ieri sera stavo dando un occhio a https://github.com/agda/agda, parlando di haskell)
io penso che se controlli l'input e l'output del tuo sistema e lasci la business logic pura non c'è bisogno di tipi ma sono un niubbo quindi potrei dire una cazzata 😄
@andrea.imparato in caso di necessità, defrecord
è bastato per ora. Non è un tipo nel senso di tipo Haskell, ma per modellare lo stato globale di un'applicazione torna utile e sposta il ragionamento su quei blocchi che i tipi Haskell modellano più finemente. A volte mi sembra di modellare oggetti come ai vecchi tempi di Java, è vero, ma defrecord
maschera via il boilerplate se non altro.
ovvio che con Haskell non modelli solo lo stato con i tipi, ma andiamo su discorsi che ancora non macino bene 🙂
e va detto che nella maggior parte dei casi per ora le mappe Clojure coprono tutta la necessità.
Io eviterei di scadere nella battaglia tipizzato vs dinamico a mio avviso non aggiunge niente sul piatto, e tanto alla fine i test li scriviamo sia in un caso che in un altro
secondo me i tipi hanno solo senso in applicazioni realtime in cui la performance del software conta veramente altrimenti sono solo un impedimento ad un futuro re factoring
però non ho esperienza reale con linguaggi funzionali puri quindi non so se sto dicendo cazzate :)
I tipi nel senso di C++ aiutano il compilatore ad allocare spazio in modo efficiente
I tipi nel senso di Haskell aiutano a sapere cosa va dentro e fuori dalle funzioni e aiutano di parecchio il refactoring
Fare refactoring in codebases Clojure >10k linee è sempre stato drammatico perché non sei mai sicuro di aver dimenticato nulla (keywords argh)
Far refactoring sulla nostra codebase Haskell (~10k linee) è tranquillissimo perchè posso rompere tutto e riordinare l’API nel modo che mi piace e il compilatore mi urla in faccia di sistemare tutti i tipi che non incastrano
(E dirai: ma come, quindi è tutto bellissimo? Dove sta il tradeoff? Eccolo: prima di risolvere un problema devi spendere una certa dose di tempo a pensare alle data structures che vanno in giro per il programma - si, tutte. Ma penso sia una cosa buona, perchè pensi di più al problema)
per curiosità, cosa fanno esattamente queste 10k linee di haskell? secondo molto dipende dai casi d’uso delle applicazioni, ogni applicazione ha le proprie necessità
*second me
Ma insomma refactoring clojure è comunque mille volte meglio di Python e simili, e se sei disciplinato con i side effects non cosi diverso da haskell secondo me
@andrea.imparato sostanzialmente un layer di REST API sopra servizi legacy SOAP. Include parsing di XML enormi, caching di roba, auth varie, etc etc
@andrea.crotti riscontro un livello migliore di “dormire bene la notte”
YMMV ovviamente