Fork me on GitHub
#clojure-italy
<
2017-06-14
>
reborg09:06:52

Interessante 🙂 Ma come tutti voi ben sapete, "giorno" in dialetto ferrarese e' "Giórn o gióran" e da ragazzini quella "g" si tramutava piu' in "z" che altro

reborg10:06:02

Secondo voi ci sono ragioni (aparte abitudine) per non usare solo transducers per qualsiasi sequence processing? Non riesco a vederne.

bronsa10:06:10

ragioni pragmatiche: se non hai bisogno delle feature offerte dai transducer, seq processing e` piu` facile da scrivere e debuggare

bronsa10:06:51

ragioni teoriche: ci sono delle leggere differenze tra le garanzie di laziness nel modello transducer (push based) e nel modello seq (pull based)

reborg10:06:57

sulla prima, non sono sicuro. Non e' quella piu' una differenza easy VS simple?

reborg10:06:49

sulla seconda, puoi puntarmi al codice magari che provo ad approfondire?

bronsa10:06:55

ma ci sono tradeoff da fare

bronsa10:06:51

e non trovo che ci sia niente di male nel preferire la soluzione piu` easy se la complessita` non aumenta e non richiedi i benefit di piu` simplicity

bronsa10:06:18

@reborg prendi la diferenza tra e.g. (take 10 (mapcat identity (repeat (range)))) e (take 10 (sequence (mapcat identity) (repeat (range))))

bronsa10:06:06

altra differenza e.g (take 0 (map println (range))) vs (take 0 (sequence (map println) (range)))

reborg10:06:28

ok, ci do un occhio grazie. Riguardo al punto 1 mettiamola cosi': se clojure 1.9 rimuovesse arity-2 da map, filter etc. il codice scritto con 1.9 sarebbe oggettivamente piu' difficile/meno debuggabile? Oppure mi abituo al nuovo stile, mi scordo di com'era prima e tanti saluti?

bronsa10:06:51

direi che oggettivamente e` piu` difficile debuggare usando processi opachi rispetto a usando sequenze realizzate

reborg11:06:03

mmmh, sembra che con xform qualcosa chieda un "seq" per vedere se la sequence e' finita? Perche' (take 0 (seq (map println (range)))) da risultati simili

reborg11:06:23

cmq, ho visto le differenze. Suppongo che uno debba essere al corrente del diverso livello di laziness per usare solo xforms

bronsa11:06:33

hmm, ok l'ultimo esempio e` forse flawed

bronsa11:06:36

ma il concetto e`:

bronsa11:06:51

i transducer sono push based, richiedono almeno un elemento

bronsa11:06:13

lazy-seqs sono pull-based e possono short-circuitare prima di realizzare un elemento