clojure-italy 2020-05-09

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)

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

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

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

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

ah mannaggia che pirla