Clojurians
#clojure-italy
<
2018-10-25
>

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

gon08:10:03

Buongiorno!

manuel12:10:20

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.

manuel13:10:47

sì, siccome è un pezzo che la tira avanti con sta storia, speravo in qualcosa di nuovo.

reborg13:10:33

se ha reimplementato clojure in haskell lo voglio sentire :troll:

reborg13:10:58

(anche haskell in clojure va bene :)

reborg13:10:36

@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…

nilrecurring13:10:56

Amo quel “reinventato” :smile:

nilrecurring13:10:18

“riscoperto”

manuel13:10:22

eh, ma son ben contento di sentire qualcosa di costruttivo. Lamentavo il fatto che l'ennesimo rant sui tipi non porta da nessuna parte

reborg13:10:54

d’accordo, non mi interessano i rant nemmeno a me… neanche fossimo in guerra con i cugini tipati

nilrecurring13:10:03

Sarei più interessato a un meta-talk in quel caso: motivazioni per le quali pensa che sia una crociata interessante da intraprendere

manuel13:10:37

facciamo che intanto preparo i popcorn per l'occasione

reborg13:10:44

spero proprio quella crociata non ci sia…

andrea.imparato15:10:15

voi come gestite la questione dei tipi cmq in produzione? Sono curioso :slightly_smiling_face:

nilrecurring15:10:15

In maniera drastica: siamo passati ad Haskell :joy:

andrea.imparato15:10:09

uh :disappointed:

andrea.imparato15:10:45

(ieri sera stavo dando un occhio a https://github.com/agda/agda, parlando di haskell)

andrea.imparato15:10:04

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 :smile:

manuel17:10:20

@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.

manuel17:10:54

ovvio che con Haskell non modelli solo lo stato con i tipi, ma andiamo su discorsi che ancora non macino bene :slightly_smiling_face:

manuel17:10:22

e va detto che nella maggior parte dei casi per ora le mappe Clojure coprono tutta la necessità.

justalanm17:10:21

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

justalanm17:10:48

E nonostante ciò dei bug ci saranno sempre sia in un caso che nell'altro

andrea.imparato18:10:28

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

andrea.imparato18:10:48

però non ho esperienza reale con linguaggi funzionali puri quindi non so se sto dicendo cazzate :)

nilrecurring19:10:09

I tipi nel senso di C++ aiutano il compilatore ad allocare spazio in modo efficiente

nilrecurring19:10:47

I tipi nel senso di Haskell aiutano a sapere cosa va dentro e fuori dalle funzioni e aiutano di parecchio il refactoring

nilrecurring19:10:01

Fare refactoring in codebases Clojure >10k linee è sempre stato drammatico perché non sei mai sicuro di aver dimenticato nulla (keywords argh)

nilrecurring19:10:35

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

nilrecurring20:10:12

(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)

andrea.imparato20:10:38

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à

andrea.crotti20:10:35

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

nilrecurring20:10:34

@andrea.imparato sostanzialmente un layer di REST API sopra servizi legacy SOAP. Include parsing di XML enormi, caching di roba, auth varie, etc etc

nilrecurring20:10:58

@andrea.crotti riscontro un livello migliore di “dormire bene la notte”

nilrecurring20:10:08

YMMV ovviamente