假设我们想要定义一个函数(sub x y z)
,它代表的含义是:以一个表达式x
,一个原子y
,一个列表z
为参数。并返回一个类似z
的列表,其中所有出现元素y
的地方都用表达式x
代替。
(subst 'm 'b '(a b (a b c) d))
(a m (a m c) d)
我们可以这样定义这个函数:
(label subst (lambda (x y x)
(cond ((atom z)
(cond ((eq z y) x)
('t z)))
('t (cons (subst x y (car z))
(subst x y (cdr z)))))))
我们会把f = (label f (lambda (p1 ... pn) e))
简记为(defun f (p1 ... pn) e)
,因此:
网友评论