[译] Lisp之根源(十三)

假设我们想要定义一个函数(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),因此:

你可能感兴趣的:([译] Lisp之根源(十三))