Tengo una siguiente muestra de código:
(type (apply / [5.0 0]))Lanza un error inesperado: "División por cero" (comportamiento esperado: devolver Inf)
Probablemente, sucede debido al auto-boxeo, ¿se puede prevenir?
Suponiendo que solo desea usar una división de dos argumentos en dobles, lo siguiente podría funcionar.
user=> (apply (fn d2div [nd] (double (/ (double n) (double d)))) [5.0 0.0]) ##Inf Si sigue este camino, consulte clj-cmmons/primitive-math .
Qué tal si
user=> (defmacro myapply [func args] `(~func ~@args)) #'user/myapply user=> (myapply / [5.0 0]) ##Inf user=> (type (myapply / [5.0 0])) java.lang.Double No sabía que apply se comporta de manera tan diferente en Clojure.