我刚开始Scheme
。我正在尝试检查返回布尔值的相等性
(cond [(= (Test number) #t) 1])]
如果我的测试函数返回true,我的main函数应该返回1.但是我得到contract violation error
。有人能帮帮我吗?
答案 0 :(得分:1)
=
仅用于比较数字。如果您确实需要检查某些内容是否为eq?
,那么#t
将是正确的相等过程。
通常,任何不是#f的值都被认为是真值,如果可以,你应该这样做:
(cond [(Test number) 1]
[else 'else-case])
您的cond
错过了一个默认情况,就像我添加的情况一样。如果你Test
返回#f你确实需要它,否则结果是未定义的。
关于SO的相关问题是What is the difference between eq?, eqv?, equal?, and = in scheme?