【发布时间】:2016-12-06 01:54:56
【问题描述】:
我有以下宏:
(defmacro anon-mac [value]
#(+ value 1))
我希望它的行为如下:
((anon-mac 1) 1) ;=> 2
但是我得到了这个错误:
IllegalArgumentException No matching ctor found for class user$anon_mac$fn__10767 clojure.lang.Reflector.invokeConstructor (Reflector.java:163)
我应该怎么做才能让这个宏返回一个像我期望的那样工作的匿名函数?
答案必须是宏。我的问题是关于宏返回匿名函数的能力
为什么答案必须是宏?在我的情况下,这是因为我不希望在编译时多次调用此转换,只要找到它。如果我要在一个调用它 200 次的 for 循环中进行这种转换,那么使用一个函数,转换将运行 200 次。然而,当宏编辑代码本身时,它只会为那个 for 循环运行一次。
【问题讨论】: