This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-06-05
Channels
- # aws (6)
- # beginners (10)
- # boot (33)
- # cider (23)
- # cljs-dev (50)
- # cljsjs (2)
- # cljsrn (10)
- # clojars (1)
- # clojure (215)
- # clojure-czech (1)
- # clojure-dev (5)
- # clojure-italy (23)
- # clojure-russia (18)
- # clojure-spec (11)
- # clojure-uk (53)
- # clojurescript (157)
- # core-async (29)
- # cursive (12)
- # data-science (15)
- # datascript (16)
- # datomic (68)
- # graphql (2)
- # jobs (5)
- # jobs-discuss (1)
- # juxt (17)
- # lein-figwheel (2)
- # luminus (3)
- # off-topic (155)
- # om (3)
- # pedestal (1)
- # portkey (1)
- # re-frame (7)
- # reagent (4)
- # ring (3)
- # ring-swagger (2)
- # rum (11)
- # unrepl (11)
- # vim (1)
- # yada (2)
@nilrecurring continuero' ad usare with-redefs per testing... mi e' solo capitato il caso in cui with-redefs non funzionava e non capivo il perche' 🙂
uhm mi rimangio il lazy-seq:
(defn myinc [x] (println "inc" x) (inc x))
(let [m (with-redefs [myinc dec] (map myinc (range 10)))] (last m))
;; 8
Uhm avrei scommesso anche io sulla realizzazione fuori. Cose che invece potrebbero star succedendo:
1. with-redefs
forza la realizzazione, oppure
2. la sequenza non viene realizzata, ma il lookup del simbolo viene fatto durante la costruzione della lazyseq
(Giorno!)
“Lazyseqs considered harmful”
Ah ah ecco, me l'avevi pure detto. Questo e' un caso del local che viene settato in ingresso, legge il var root e non puo' piu' essere ridefinito
pero' non mi spiego ancora perche' with-redefs funziona quando la lazy-seq e' realizzata fuori dal blocco
la sequenza e` lazy ma l'evaluation di clojure e` comunque strict -- myinc
nel map viene comunque ridefinito a dec
strictly visto che e` usato come argomento
Nice, quindi il caso 2.
In realtà qua si comporta come dovrebbe
Quindi hai problemi solo con partial
e multithreading
@nilrecurring si comporta sempre come dovrebbe (c'e' sempre un motivo dopo averlo scoperto). Se sorprende solo me quello e' un altro discorso
Sarebbe carino se funzionasse anche in questi corner cases 🙂
(`partial` sorprende anche me TBH)
Se sai come funziona ovviamente non sorprende più, ma conta l’intuizione che avevi prima