这又是一个让我感到很惊讶的thing,让我们理清一下思路:
现在我们是要实现cons,car以及cdr,使得(car (cons x y))=x,(cdr (cons x y))=y,cons由我们自己定义,它的值要么是数,要么是函数,一般情况下,用数将两个量结合还能区分开来是比较困难的,那么cons应该返回一个函数,这个函数要能根据接受的参数返回x或y,这个参数可以是同一个函数的不同参数,也可以是不同的函数,这里是书上的第二种定义,主要体现的思想是过程可以作为参数被传递,也可以作为值被返回,这在其他的语言里实现起来远没有scheme方便,一切解释数据:
(define (my-cons x y)
(lambda (f) (f x y)))
(define (my-car z)
(z (lambda (x y) x)))
(define (my-cdr z)
(z (lambda (x y) y)))
(define test (my-cons 1 2))
(my-car test)
(my-cdr test)
975

被折叠的 条评论
为什么被折叠?



