为什么Scheme解释器需要not
的数字参数?
就我而言:
(not (= 1 2))
返回以下错误:
-: contract violation
expected: number?
given: #f
context...:
stdin::1135: not
这与我对SICP的20分钟经验相反,根据该经验,not
是一个逻辑组合运算符,其操作数也应该是合乎逻辑的。
这是最有趣的部分:错误不可复制。我知道这听起来很愚蠢,但是我发布了一次Racket,得到了这个错误,重新启动它并且错误消失了(即not
切换到返回正确的逻辑值)。有没有人知道为什么会发生这种情况?有什么我不知道会影响Scheme或Racket的行为吗?
注意:在任何情况下,我都没有以任何方式修改环境。我唯一做的就是输入上面的表达式。
答案 0 :(得分:0)
就是说我做了:
我在guile,gambit,chicken,drracket 6.4中测试(not (= 1 2))
,他们都按预期返回#t
。
因此,您的安装或环境中肯定存在一些问题。要找到它,我们需要更多信息。