Fork me on GitHub
#clojure-italy
<
2020-05-09
>
andrea.crotti06:05:57

un momento di confusione con le macros

(def fn-names ["go" "fill" "fill-active"])
(def fns (into {}
               (for [f fn-names]
                 {f (resolve (symbol (string/join "/" ["etaoin.api" f])))})))

(defmacro def-all
  []
  (doseq [[n f] fns]
    `(def ~(symbol n) (partial ~f *driver*))))

(def-all)

andrea.crotti06:05:24

questo dovrebbe definire 3 defs ma non fa nulla. Se tolgo il doseq e ne definisco una sola allo stesso modo funziona

andrea.crotti06:05:36

praticamente un esempio e' (def go (partial etaoin.api/go *driver*)) , non so neanche se lo usero' questo truccone alla fine ma volevo capire almeno perche' non va

mpenet07:05:20

doseq returns nil. Devi usare (do ~@(map...)`

mpenet07:05:41

La macro fa solo di ritornare codice, in questo caso (do (def...) (def...)...)

andrea.crotti07:05:57

ah mannaggia che pirla