【发布时间】:2012-04-01 10:42:53
【问题描述】:
我得到了可怕的 * 不能在这里用一个简单的数学函数转换为 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)))))
;;;;;;;;;;;;
args 只是一堆数字:
(calc 1 2 3 4 5 1 2 3 4 5 1)
我的想法/我的问题
通常,当我收到此错误时,我发现它是由于
1) 一个额外的括号(即当我不小心在我的代码中添加了一个额外的闭包时)或
2) 排序错误的参数(显然 - 强制转换异常)。
我的问题很简单......如何修复这个 sn-p,并且可选地 - 我怎样才能一劳永逸地克服这个常见的异常?它似乎经常出现在我的 Clojure 编码探险中,我在想也许我还没有正确的开发风格。
------------------------------------------ ------------
更新:
我的代码中充满了不规则的语法。错误出现在内部函数中,其中 使用了 java/c 风格的函数调用:例如 max / log ...
【问题讨论】:
标签: clojure