bar/core.clj
:
(ns bar.core)
(defmacro unless [pred a b]
`(if (not ~pred)
~a
~b))
(defmacro abs [x]
`(unless (neg? ~x)
~x
(- ~x)))
foo/core.cljs
(ns foo.core
(:require-macros bar.core))
(defn taxicab-norm [a b]
(+ (bar.core/abs a)
(bar.core/abs b)))
cljs.user=> (require 'foo.core)
nil
cljs.user=> (foo.core/taxicab-norm -4 5)
9
Minimal repro:
(require 'cljs.js)
(let [st (cljs.js/empty-state)]
(cljs.js/eval-str
st
"(ns foo.core
(:require-macros bar.core))"
nil
{:eval cljs.js/js-eval
:context :expr
:load (fn [m cb]
(prn m)
(cb {:lang :clj
:source "(ns bar.core)
(defmacro unless [pred a b]
`(if (not ~pred)
~a
~b))
(defmacro abs [x]
`(unless (neg? ~x)
~x
(- ~x)))"}))}
(fn [{:keys [value error]}]
(if error
(prn 'error error)
(cljs.js/eval-str
st
"(bar.core/abs -17)"
nil
{:ns 'foo.core
:eval cljs.js/js-eval
:context :expr}
identity)))))