对于我来说,clojure宏是一个难点,这是一个从"Pratical Clojure"中获取的宏观示例:
(defmacro triple-do [form]
(list 'do form form form))
user=> (triple-do (println "test"))
test
test
test
nil
Run Code Online (Sandbox Code Playgroud)
这个三合一效果很好而且我认为以下版本应该可以工作但不能
(defmacro triple-do [form]
(do form form form))
user=> (triple-do (println "test"))
test
nil
Run Code Online (Sandbox Code Playgroud)
为什么它只打印一次?
以下让我非常困惑
(defmacro test-macro [form] (do form (println "hard code test")))
user=> (test-macro (println "hello"))
hard code test
nil
Run Code Online (Sandbox Code Playgroud)
为什么"你好"没有在控制台中显示?