我尝试在clojure中编写一个宏来设置命名空间并自动添加一些方法.我的宏没有工作,我将其跟踪到一个do语句.在do中声明一个新的命名空间是不可能的,然后立即在该命名空间中声明一个方法.为什么?
这不起作用:
(ns xyz)
(do
(ns abc)
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
Run Code Online (Sandbox Code Playgroud)
这工作(do之前的名称空间声明):
(ns xyz)
(ns abc)
(do
(prn *ns*)
(defn tst[] (prn "test" *ns*)))
(prn "after" *ns*)
(tst)
Run Code Online (Sandbox Code Playgroud)
感谢阅读,马库斯