【发布时间】:2011-02-27 07:17:59
【问题描述】:
下面的代码不像我预期的那样运行。
; given a function name, its args and body, create 2 versions:
; i.e., (double-it foo []) should create 2 functions: foo and foo*
(defmacro double-it
[fname args & body]
`(defn ~fname ~args ~@body)
`(defn ~(symbol (str fname "*")) ~args ~@body))
上面的代码并没有像我期望的那样创建两个函数。它只创建最后一个。
user=> (double-it deez [a b] (str b a))
#'user/deez*
如何获得一个宏来定义两个函数?
【问题讨论】: