ラケット/リストのカウントtrue?
で使用する関数を定義しました。
(define (true? expr)
(and (boolean? expr) expr #t))
数値引数を指定すると、関数が喜んで を返すことに気付きました#f
。
> (true? 6)
#f
そこで、ラケット コントラクトを使用して、非ブール値の引数がコントラクト違反でエラーを返すようにすることを検討しようと考えました。したがって、このコードをファイルの先頭に置きます。
(provide (contract-out
[true? (-> boolean? boolean?)]))
ただし、コントラクトを追加した後も、ラケット REPL で上記と同じ動作が得られます。それがどうしてなのか理解できません。私は何が欠けていますか?