在The Little Schemer(第 4 版)中,声称一个错误的列表null?
至少包含一个 atom,或者我从阅读文本中了解到。
这对我来说没有意义,因为(atom '())
它是错误的,我们可以将它们粘贴到一个列表中以使其非空:
> (null? '(()))
#f
所以我的问题是,这是我的阅读错误,还是定义问题?由于它不在勘误表中,我认为这样一本经过充分研究的书不会有这样的错误。
如果我们认为(())
与原子相同(() . ())
或什 (cons '() '())
至然后考虑cons
原子,那么我可以看到您如何到达那里,但我认为这不是正在发生的事情。
(这是在 Racket 7.0 中测试的,atom?
书中给出的定义,即
(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))
我知道这不包括有趣的球拍功能,但在这里应该足够了。)