clojure 函数可以采用的参数数量似乎是有限的。
在定义具有 20 多个参数的函数时,我收到以下信息:
#<CompilerException java.lang.RuntimeException: java.lang.RuntimeException: java.lang.Exception: Can't specify more than 20 params (NO_SOURCE_FILE:0) (NO_SOURCE_FILE:0)>
显然这是可以避免的,但是我在将现有 DSL 的执行模型移植到 clojure 时遇到了这个限制,并且我的 DSL 中有如下构造,通过宏扩展可以很容易地将其映射到函数,除了这个限制:
(defAlias nn1 ((element ?e1) (element ?e2)) number
"@doc features of the elements are calculated for entry into
the first neural network, the result is the score computed by the latter"
(nn1-recall (nn1-feature00 ?e1 ?e2) (nn1-feature01 ?e1 ?e2) ... (nn1-feature89 ?e1 ?e2)))
这是一个 DSL 语句,用于调用具有 90 个输入节点的神经网络。当然可以解决它,但想知道限制来自哪里。谢谢。