clojure-italy

🇮🇹
2020-05-09T06:28:57.076900Z

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)

2020-05-09T06:29:24.077600Z

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

2020-05-09T06:30:36.079Z

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

mpenet 2020-05-09T07:01:20.080800Z

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

mpenet 2020-05-09T07:04:41.083100Z

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

2020-05-09T07:38:57.083300Z

ah mannaggia che pirla