Fork me on GitHub
#clojure-italy
<
2018-06-22
>
reborg06:06:12

Ah ah buggy buggy, senza guardare il decompilato, direi che (f2 (T2. 1)) assegna (T2. 1) ad un qualche field interno alla classe, chiama il body di f2 che lo legge, ed il body poi assegna nil al field. Se c'e' exception, la versione precedente di T2 e' ancora nel field, che evidentemente non viene riassegnato.

reborg06:06:59

L'hai scoperto tu o e' stato riportato?

bronsa08:06:46

@gabriele non proprio ma ci sei vicino

bronsa08:06:47

@reborg ottima teoria! c'è infatti una inline cache che si comporta come dici tu, ma in questo caso non è rilevante visto che ho intenzionalmente usato (f nil) per evitare di avere una cache hit su T2

bronsa08:06:40

@reborg ho scoperto ieri che il primo caso funziona, entrambi fallivano fino a 1.8.0

bronsa08:06:27

re: la tesi, ci ho dato un'occhiata qualche mese fa, un po' underwhelming IMO

reborg08:06:58

Io la trovo interessante. Scorre come un tutorial su come applicare APL2 per verifica in Clojure, che e' quello che vorrei provare per alcuni algos. Poi sono interessato ad un porting di defthm & friends in un'altra vita...

reborg09:06:53

Che altro mettereste in un clojure advanced workshop, possibilmente 1 solo giorno? https://github.com/uswitch/uswitch-academy/blob/master/clojure-advanced La definizione di "advanced" e' molto variabile.

👍 4
bronsa09:06:02

super minor NIT: >Abstract Data Type (ADT)

bronsa09:06:13

di solito per ADT si intende Algebraic Data Type

bronsa09:06:32

rimuoverei l’abbreviazione per non fare confusione

reborg10:06:03

non necessario, ma grazie. Cmq, viene prima in wikipedia https://en.wikipedia.org/wiki/ADT

bronsa09:06:19

includerei un esempio di hierarchical multimethod con local hierarchy

bronsa09:06:14

per il resto quello che c’e` mi sembra ottimo

reborg10:06:23

Si ci avevo pensato. Ma non mi veniva un esempio veloce. Quand'e' che useresti una custom hierarchy?

bronsa10:06:29

e` l’unico modo per avere hierarchy senza dover usare namespaced keywords per esempio

reborg10:06:34

Ok, si aggiungo volentieri

reborg10:06:25

Ma perche' non potevi fare con namespaced keywords?

mpenet09:06:56

ho usato questo pocco tempo fa per giocare con specs+metadata. Non sapevo anche che esiste make-hierarchy.

mpenet10:06:31

e il fatto che si puo anche utilisare simple keywords con questo

reborg10:06:30

ti manca solo un spex/defmulti che usa il tuo spex/isa? per fare dispatch su specs invece che keywords

reborg10:06:57

ma con spex/def-derived si potrebbe avere "inheritance"

gabriele10:06:39

@bronsa ma quindi perché succede? 😬

bronsa10:06:49

@gabriele.carrettoni c’eri vicino! la JVM linka le classi a class load time, fino a clojure 1.8.0 clojure loadava le classi on import, da clojure 1.8.0 clojure non loada eagerly ma on first use, e quindi nel primo esempio f linka al secondo T, mentre nel secondo f2 linka al primo T2 perche` (f2 nil) forza il class loading

gabriele10:06:27

interessante, grazie 🙂

gabriele10:06:51

non avevo pensato al caricamento delle classi

gabriele10:06:09

immaginavo fosse qualcosa dovuto alla laziness

bronsa10:06:18

il fatto che il primo esempio funzioni e` “per sbaglio”

bronsa10:06:37

@gabriele.carrettoni clojure ancora non fa lazy var initialisation

gabriele10:06:29

riesci ad approfondire?

bronsa10:06:11

quale parte? :)

gabriele10:06:42

"clojure ancora non fa lazy var initialisation"

gabriele10:06:01

in che modo si collega a quello che ho detto, sembra una correzione alla mia affermazione sulla laziness

gabriele10:06:13

ma non la capisco 😅

bronsa10:06:55

quando definisci una var, il bytecode viene caricato in memoria eagerly

bronsa10:06:21

c’e` una proposta per rendere def “lazy”

bronsa10:06:53

e aumentare la velocita` di caricamento iniziale dei namespace

gabriele10:06:23

ok ora ho capito che intendevi

gabriele10:06:54

cambiando argomento, ho avuto modo di giocare un po' con datomic ions

gabriele10:06:25

mi piace molto ma è ancora troppo giovine per usarlo in prod

gabriele10:06:38

spero maturi bene

gabriele10:06:48

qualcuno è riuscito a provarlo?

gabriele10:06:16

io ho avuto un bel po' di disagi al pronti via ma sistemati quelli sembra andare easy

reborg10:06:30

qui niente ion tests, penso che passero' aspettando articoli e commenti nei prossimi mesi. ma se facessi un mituppe verrei a sentirti

gabriele10:06:05

prima dovrei imparare a parlare in pubblico

reborg10:06:23

eh si puo' essere utile 🙂

reborg10:06:46

cmq si impara parlando in pubblico

reborg10:06:05

magari in pair con qualcun'altro le prime volte

gabriele10:06:05

non so neanche se ne valga la pena sinceramente, ai pochi meetup che sono andato la gente era più interessata al cibo e avevano sempre una conoscenza basilare dei linguaggi/argomenti trattati

gabriele10:06:20

quindi sempre talk entry level

gabriele10:06:31

poi su una cosa di nicchia come datomic ions

reborg10:06:57

sara' in relazione al posto, ma se la fai qui vedi che fila

gabriele10:06:00

magari è qui in italia che fan cagare non so

gabriele10:06:47

per farti capire la chicca più bella di sempre è codemotion 2016 uno che parla degli indici di cassandra e a 3/4 del talk uno alza la mano e chiedi "cassandra is a?" ... "database" .. "ah ok thanks"

reborg10:06:27

🙂 o 😢 dipende

reborg10:06:01

ho fatto un codemotion anni fa... era molto "universitario" il pubblico

richiardiandrea16:06:28

spex e' interessante, sto ripensando a usare schema di nuovo per fare validation...e ritornare errori agli utenti, al momento use spec + expound