ns1:
(ns ns1)
(defn- my-fun [x] (first x))
(defmacro my-macro [x] (my-fun ~x))
:
(ns ns2
(:require [ns1 :refer [my-macro]]))
(my-macro [1 2])
, ns2 :
(ns ns2
(:require [ns1 :refer [my-macro]]))
(ns1/my-fun [1 2])
.
, ns1 ns2 .
, macroexpand, .
, : datastructures, (, , ..). , , :
(macroexpand '(xor true false))
;; => (if (clojure.core/= (clojure.core/count (quote (false))) 1) true (boot.user/xor true))
(macroexpand '(xor (zero? 1) (zero? 0)))
;; => (if (clojure.core/= (clojure.core/count (quote ((zero? 0)))) 1) false (boot.user/xor false))
, xor-result , , . xor-result . , , .