Im conseguir la temida * no puede ser echado a un error IFn con una simple función matemática aquí:Clojure: Entero no puede lanzar al 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)))))
;;;;;;;;;;;;
Los argumentos son simplemente un montón de números:
(calc 1 2 3 4 5 1 2 3 4 5 1)
Mis pensamientos/Mi pregunta
Por lo general, cuando me sale este error, me parece que se debe a
1) Un paréntesis adicional (es decir, cuando accidentalmente he puesto un cierre adicional en mi código) O
2) Argumentos que están mal ordenados (obviamente, una excepción de lanzamiento).
Mi pregunta es simplemente ... cómo solucionar este fragmento, y opcionalmente, ¿cómo puedo vencer esta excepción común de una vez? Parece que ocurre con bastante frecuencia en mis expediciones de codificación de Clojure, y estoy pensando que tal vez todavía no he conseguido el estilo de desarrollo correcto.
--------------------------------------------- ----------
ACTUALIZACIÓN:
he plagado mi código con la sintaxis unregular. Los errores estaban en las funciones internas, que usa una llamada a funciones estilo java/c: por ejemplo, max/log ...
considerar la aprobación de un mapa como argumentos en lugar de un millón de argumentos ordenados y utilizar el ': keys' macro desestructuración. –