gpt4 book ai didi

clojure - 宏不能返回匿名函数?克洛尤尔

转载 作者:行者123 更新时间:2023-12-02 17:38:34 24 4
gpt4 key购买 nike

我有以下宏:

(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 循环只会运行一次。

最佳答案

我只需要在评估内部变量时转义函数,如下所示:

(defmacro anon-mac [value] `#(+ % ~value))

关于clojure - 宏不能返回匿名函数?克洛尤尔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com