The Little Schemer(第 4 版)第二章中的第一个问题要求读者编写函数lat?
,如果是原子列表,(lat? l)
则返回 true 。l
它接着说:
您还没有预料到能够做到这一点,因为您仍然缺少一些成分。
但是我对递归很熟悉,并且atom?
书中前面已经介绍过的定义and
(进一步暗示存在or
),所以我还是试了一下:(repl)
(define lat?
(lambda (l)
(or
(null? l)
(and
(atom? (car l))
(lat? (cdr l))))))
在下一页,本书介绍了cond
启用以下定义的运算符lat?
:
(define lat?
(lambda (l)
(cond
((null? l) #t)
((atom? (car l)) (lat? (cdr l)))
(else #f))))
这两种实现之间有什么显着区别吗?