イム取得恐ろしい*ここで簡単な数学関数で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)))))
;;;;;;;;;;;;
argsが、単純に数字の集まりです:私はこのエラーを取得するとき
(calc 1 2 3 4 5 1 2 3 4 5 1)
私の考え/私の質問
は通常、私はそれが
1によるものです見つけます)余分な括弧(つまり、私が誤って自分のコード内の余分な閉鎖を入れているとき)OR
2)misorderedされている引数(明らかにキャスト例外)。
私の質問は、このスニペットを修正する方法...単純で、必要に応じて - どのように私は一度、すべてこの共通の例外を倒すことができますか?私のClojureコーディングの探検隊では非常に頻繁に発生するようですが、私はまだ適切な開発スタイルをまだ持っていないかもしれないと思っています。
--------------------------------------------- ----------
UPDATE:
私はunregular構文を使用して自分のコードを吟味しました。エラーは内部関数にあり、 はJava/Cスタイルの関数を使用していました。例えばmax/log ...
ではなく、万人命じた引数の引数としてマップを渡すことを検討して '使用:keys'非構造マクロを。 –