【发布时间】:2011-11-14 05:07:16
【问题描述】:
我正在尝试编写一个 clojure 宏,它允许我调用一个函数并使用提供的键值从映射/结构中检索参数,例如:
(with-params {:apple 2 :banana 3 :cherry 7} + :apple :banana)
;; 5
但是当我尝试使用我写的宏时:
(defmacro with-params [s f & symbols]
`(~f ~@(map ~s ~symbols)))
打电话
(with-params {:apple 2 :banana 3 :cherry 7} + :apple :banana)
给我
#<CompilerException java.lang.IllegalStateException: Var clojure.core/unquote is unbound. (NO_SOURCE_FILE:0)>
有人可以帮我理解语法引用在这里的工作原理吗?
【问题讨论】:
标签: macros functional-programming clojure lisp