【SICP读书笔记(二)】使用过程来黏合数据 —— 酷炫吊的消息传递机制

首先,让我们来看几个内建函数

(cons x y),作用是把x和y绑定成一个序对

(car z),作用是提取z序对的第一个元素

(cdr z),作用是提取z序对的第二个元素

 

容易看出,这个东西有点类似OO语言里的类,car和cdr是get方法,x和y是成员变量。

 

但是,但是!

函数式的编程方式,居然可以利用过程来实现这三个函数!实在是不可思议

下面具体看看实现的过程

 

(define (cons x y)
    (lambda (m) (m x y)))

(define (car z)
    (z (lambda (x y) x)))

(define (cdr z)
    (z (lambda (x y) y)))

 

首先,cons过程接受两个元素,却不是返回我们想象中的数据,而是返回了一个以过程为参数的新过程

其次,在car过程中,接受这个cons产生的过程,并传递了一个新的过程给它,最后根据cons的参数表把要的数据读取了出来

 

实在是不可思议,大开眼界

posted on 2014-12-09 11:29  shadowmydx'sLab  阅读(219)  评论(0编辑  收藏  举报

导航