cons的定义

来源:互联网 发布:网络信息安全认证证书 编辑:程序博客网 时间:2024/05/16 05:00

这又是一个让我感到很惊讶的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)
0 0