即時得到可怕的*不能轉換到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