Im ottenendo il temuto * non può essere gettato per errore IFN con una semplice funzione matematica qui:Clojure: Integer non può lanciare a 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)))))
;;;;;;;;;;;;
Gli argomenti sono semplicemente un po 'di numeri:
(calc 1 2 3 4 5 1 2 3 4 5 1)
I miei pensieri/La mia domanda
Di solito, quando ottengo questo errore, trovo che sia dovuto al
1) Una parentesi in più (ovvero quando ho inserito accidentalmente una chiusura extra nel mio codice) O
2) Argomentazioni errate (ovviamente - un'eccezione cast).
La mia domanda è semplicemente ... come risolvere questo snippet e, facoltativamente, come posso sconfiggere questa eccezione comune una volta per tutte? Sembra che si verifichi abbastanza spesso nelle mie spedizioni in Clojure, e penso che forse non ho ancora avuto il giusto stile di sviluppo.
--------------------------------------------- ----------
UPDATE:
ho crivellato il mio codice con la sintassi unregular. Gli errori erano nelle funzioni interne, che utilizzava chiamate di funzione stile java/c: ad esempio max/log ...
consideri che passa una mappa come argomenti, invece di un milione di argomenti ordinati e utilizzare il ': keys' macro destrutturazione. –