assert
(assert test) / (assert test msg)
テストが真なら nil、そうでなければ Exception の catch が捕捉しない AssertionError をシグナルします。メッセージは Assert failed: <form>、メッセージ付きなら
Assert failed: <msg>\n<form> で、失敗したフォームは oracle と同様に readable に出力されます。
メッセージは else 節にあるため、失敗時にのみ評価されます -- oracle と同様に遅延します。
and/or と同様に、assert に関数値はありません。
assert はオラクルのマクロと同様に展開される時点の *assert* を読みます。トップレベルの
(set! *assert* false)(または nil)の後の assert は、トップレベルで true に戻すまで
テストもメッセージも評価せず nil になります。assert を囲む *assert* の binding は
何も変えません。
nil