学点函数式

car 与 cdr的参数都是非空list, car返回list的第一个元素, cdr返回list除了第一个元素之外的元素, 也就是返回一个list

cons需要两个参数, 第二个参数必须是一个list, 返回两个参数拼接起来的一个list

lat? 函数是遍历一个list里的每一个S-expression, 如果存在一个S-expression不是atom就返回#f, 否则返回#t

代码:

1
2
3
4
5
6
7
8
9
10
(define atom?
(lambda (x)
(and not (pair? x)) (not (null? x))))

(define lat?
(lambda (l)
(cond
((null? l) #t)
((atom? (car l))(lat? (cdr l)))
(else #f))))

script>