如果我打电话给 Racket/Dr. 拍下以下代码:
> add1
我得到:
#<procedure:add1>
如果我使用一个名为 rackunit 的单元测试库,我试试这个:
(require rackunit)
(check-equal? add1 #<procedure:add1>)
测试失败并出现语法错误:
read: bad syntax `#<'
为什么会这样?
如果我打电话给 Racket/Dr. 拍下以下代码:
> add1
我得到:
#<procedure:add1>
如果我使用一个名为 rackunit 的单元测试库,我试试这个:
(require rackunit)
(check-equal? add1 #<procedure:add1>)
测试失败并出现语法错误:
read: bad syntax `#<'
为什么会这样?
对于多种类型的数据,您write
可以read
返回什么。但是在程序的情况下你不能,因此它被输出为一个不可读的值。
过程相等就像不透明的结构相等:它只检查身份。如果这就是您所需要的,您仍然可以将过程存储在某处并使用 check-equal? (例如,带有 add1 的列表将与带有 add1 的列表进行比较)。如果您需要实际检查程序在逻辑上是否相同,通常这是不可能的。