Я понял, что переменную Clojure *assert*
можно использовать для отключения утверждений, но, похоже, ничего из того, что я делаю, не работает.
(defn foo [a]
{:pre [(pos? a)]}
(assert (even? a))
[a])
(binding [*assert* false]
(foo 1))
!! exception
(binding [*assert* false]
(foo -2))
!! exception
Даже для привязки false
при определении возникают те же проблемы:
(binding [*assert* false]
(defn bar [a]
{:pre [(pos? a)]}
(assert (even? a))
[a]))
(bar 1)
!! execption
И тогда даже установка прямой переменной не работает.
*assert*
is true
(alter-var-root (var *assert*) not)
*assert*
is still true
и
(var-set (var *assert*) false)
*assert*
is still true
Так что теперь я не понимаю, что делать.Я в замешательстве.
Спасибо.