即时得到可怕的*不能转换到IFN错误用一个简单的数学函数在这里:的Clojure:整数无法投射到IFN
(defn calc [sc1 m1 alpha beta gamma ta1 tb1 min_m1 min_tca tca_ratio x32]
(*
(max(0,
(+
(* alpha log(sc1))
(* beta log(m1))
(* gamma (/ ta1 tb1))
(- log(ta1) log(tb1)))))
(max(x32,(/ m1 min_m1)))
(max(x32,(/ tca_ratio min_tca)))))
;;;;;;;;;;;;
的ARG游戏只是一串数字:
(calc 1 2 3 4 5 1 2 3 4 5 1)
我的想法/我的问题
通常,当我得到这个错误,我发现这是由于
1 )一个额外的括号(即,当我意外地在我的代码中加入额外的封闭)或
2)错误排列的参数(显然 - 演员例外)。
我的问题是简单的...如何解决这个片段,以及可选的 - 我怎么能一劳永逸地打败这个常见的异常?看来它在我的Clojure编码考察中经常发生,我想也许我还没有得到正确的开发风格。
--------------------------------------------- ----------
UPDATE:
我已经千疮百孔我的代码以unregular语法。这个错误发生在内部函数中,其中 使用了一个java/c风格函数调用:例如max/log ...
考虑通过一个地图作为参数,而不是一百万有序的参数和使用':keys'解构宏。 – 2014-04-12 14:45:56