Tenía que entender que la variable *assert*
de Clojure se podía usar para desactivar las aserciones, pero nada de lo que hago parece funcionar.¿Cómo hacer que Clojure respete la variable `* assert *`?
(defn foo [a]
{:pre [(pos? a)]}
(assert (even? a))
[a])
(binding [*assert* false]
(foo 1))
!! exception
(binding [*assert* false]
(foo -2))
!! exception
Incluso a la hora de definir la unión false
tiene mismos problemas:
(binding [*assert* false]
(defn bar [a]
{:pre [(pos? a)]}
(assert (even? a))
[a]))
(bar 1)
!! execption
Y entonces, incluso a establecer la variable directa no trabajan.
*assert*
is true
(alter-var-root (var *assert*) not)
*assert*
is still true
y
(var-set (var *assert*) false)
*assert*
is still true
Así que ahora yo no soy la comprensión de qué hacer. Estoy confundido.
Gracias.
Esto funciona. Podría apagar esto dinámicamente probando una variable de entorno. – Virmundi