macros can be contagious(传染)中有如下例子
(defn send-email [user messages]
(Thread/sleep 1000)) ;; this would send email in a real implementation
(def admin-user "[email protected]")
(def current-user "[email protected]")
(defn notify-everyone [messages]
(apply log messages)
(send-email admin-user messages)
(send-email current-user messages))
; CompilerException java.lang.RuntimeException:
; Can't take value of a macro: #'user/log, compiling:(NO_SOURCE_PATH:2:3)
其实apply 这段换个写法就可以
(defn send-email [user messages]
( log user messages)
(Thread/sleep 1000)) ;; this would send email in a real implementation
(def admin-user "[email protected]")
(def current-user "[email protected]")
(defn notify-everyone [messages]
( log messages)
(send-email admin-user messages)
(send-email current-user messages))