我在球拍/列表中定义了一个true?
与计数一起使用的函数。
(define (true? expr)
(and (boolean? expr) expr #t))
我注意到我可以为它提供数字参数,并且我的函数会很高兴地返回#f
.
> (true? 6)
#f
所以,我想我会探索使用球拍合约来使非布尔参数返回违反合约的错误。所以我把这段代码放在我文件的顶部:
(provide (contract-out
[true? (-> boolean? boolean?)]))
但是,在添加合同后,我仍然在球拍 REPL 中得到与上述相同的行为。我不明白这怎么可能。我错过了什么?