Fork me on GitHub
#clojure-italy
<
2018-02-14
>
cperrone08:02:50

a chi lo dici. Nel preciso istante in cui mi illudo di pensare “sto finalmente cominciando a grokkare ‘sto approccio funzionale”, mi basta un problemino banale (per altri) per farmi esplodere come una supernova. L’umilta’ si impara a bastonate 😓.

reborg17:02:47

dimenticato qualcosa?

bronsa18:02:09

hehe, enumeration-seq non molti ne conoscono l'esistenza

bronsa18:02:33

per un attimo 'folders/file' non capivo cosa volesse dire, assumevo folders as in folding non directory

bronsa18:02:34

consiglio di cambiare in caso ci siano altri idioti come me 🙂

bronsa18:02:58

un onorevole menzione a tree-seq no?

reborg18:02:13

Ok grazie, cambio folders. tree-seq c'e'

bronsa18:02:20

ah son cieco allora

bronsa18:02:26

scusa sto vedendo dal cellulare

reborg18:02:55

figur, no prob!

reborg18:02:33

pensa che enumeration-seq l'ho dovuta usare poco tempo fa. Se lavori con ConcurrentHashMap e' l'unica offerta per estrarre le keys

bronsa18:02:25

penso d'averlo usato una volta nella mia vita

bronsa18:02:29

ed esattamente per quel motivo

reborg20:02:38

non c'e' vero qualcosa di esplicito per creare chunked sequences (come c'e' invece rseq, subseq, seque etc.)?

bronsa20:02:18

chunk-cons/`chunk-append`/`chunk`/`chunk-rest`/`chunk-first`/`chunk-buffer`

bronsa20:02:49

son tutte le utility disponibili per manipolare chunked seqs

bronsa20:02:15

chunk-rest/chunk-first si usano per manipolare sequenze chunk esistenti

bronsa20:02:21

il resto per crearne ex novo

bronsa20:02:08

user=> (let [buf (chunk-buffer 10)] (dotimes [i 10] (chunk-append buf i)) (chunk-cons (chunk buf) nil))
(0 1 2 3 4 5 6 7 8 9)

bronsa20:02:56

api non particolarmente piacevole da usare ma..

bronsa20:02:52

e volutamente non documentata

reborg20:02:11

eh ho visto queste, volevo vedere se mi era sfuggito un (chunk-seq (range 10)) da qualche parte

bronsa20:02:23

user=> (let [buf (chunk-buffer 10)] (dotimes [i 10] (chunk-append buf i)) (chunk-cons (chunk buf) nil))
(0 1 2 3 4 5 6 7 8 9)
user=> (def a *1)
#'user/a
user=> (chunk-first a)
#object[clojure.lang.ArrayChunk 0x696f0212 "clojure.lang.ArrayChunk@696f0212"]
user=> (nth *1 0)
0
user=> (nth *2 1)
1

bronsa20:02:30

@reborg no in quel caso

bronsa20:02:53

(comp seq vec)

bronsa20:02:58

ha lo stesso effetto in pratica

bronsa20:02:15

un po' piu` costoso di farlo a mano pero`

reborg20:02:34

vero, che dipende da come vector ha deciso di ritornare l'ISeq

bronsa20:02:46

in che senso?

bronsa20:02:52

seq di vector sono sempre chunked

reborg20:02:16

si appunto, e' un particolare implementativo di vector di ritornare chunked 32

bronsa20:02:33

ma quello e` vero di chunked seqs in generale

bronsa20:02:50

l'intero concetto di una chunked-seq e` un dettaglio implementativo

bronsa20:02:59

non sono api publiche

reborg20:02:42

si si, mi chiedevo come mai, visto che altre sono pubbliche

bronsa20:02:59

perche` non e` un'astrazione

bronsa20:02:06

e` solo una performance optimization interna

bronsa20:02:25

il fatto che le funzioni siano pubbliche e` solo perche` possono tornare utili, se sai quel che stai facendo

bronsa20:02:33

ma non e` roba che clojure vuole esporre come parte del linguaggio

bronsa20:02:06

(mi sa che stiamo dicendo la stessa cosa :))

reborg20:02:29

ok capisco, quindi forse 32 e non 64 ha un singnificato preciso

reborg20:02:58

prob e' il solito log32N

bronsa20:02:03

32 non e` scelto a caso

bronsa20:02:20

e` scelto perche` 32 e` la dimensione degli array node interni sia di PV che di PHM

bronsa20:02:40

quindi creare un chunk per un PV o un PHM e` semplicemente fare new Chunk(currNode.arr)

bronsa20:02:51

visto che i chunk sono internamente wrapper per array

reborg20:02:03

si ha senso ora

reborg21:02:24

ma allora @bronsa quand'e' che inizi a lavorare su un tools.analyzer.graal che produce un AST di nodi come graal li vuole? 🙂

bronsa21:02:01

appena finisco i quintali di paper su cui mi son infognato ultimamente

bronsa21:02:38

c'avessi meta` del tempo che mi servirebbe per far quel che ho in mente...

reborg21:02:41

a chi lo dici...