(define (my_cons x y) ......(1)
(lambda (m) (m x y)))
(define (my_car z) ......(2)
(z (lambda (p q) p)))
(define (my_cdr z)
(z (lambda (p q) q)))
> (my_car (my_cons 1 2)) .......(3)
1
理解:
根据(2)将(3)my_car展开,我们得到
> ((my_cons 1 2) (lambda (p q) p)) ...... (4)
1
(1)式定义了一个函数,这个函数的参数m是一个函数,返回x, y将作为m的参数,调用m运行。
(2)式定义了一个函数,这个函数调用函数z,并以一个lamdba函数作为z的参数
根据(1)将(4)my_cons展开,我们得到
> ((lambda (m) (m 1 2 )) (lambda (p q) p) ) ......(5)
1
python的等价代码:
>>> def my_cons(x,y): return lambda m: m(x,y)
...
>>> def my_car(z): return z(lambda p,q: p)
...
>>> my_car(my_cons(1,2))