как представляется, существует ограничение на количество параметров, которые может выполнять функция a 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 входными узлами. Конечно, можно обойти это, но было интересно, откуда взялся предел. Спасибо.