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
だから今、私は何をすべきか理解していません。私は混乱しています。
ありがとうございました。