日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > SICP 習題 (2.4) 解題總結

SICP 習題 (2.4) 解題總結

來源:程序員人生   發布時間:2014-10-06 08:00:00 閱讀次數:1975次

SICP 習題 2.4 是一道很有意思的題目,它在一定程度上會改變你對數據結構的認識。

按題目的說法,這里講到的是“序對的過程性表示”。


序對大家應該熟悉了,前面幾道題都和序對有關系,那序對的“過程性表示”是什么意思呢?

簡單一點說就是用一種過程(或者說函數啦)來實現序對。


在此之前,對于很多程序員來講,數據是數據,過程是過程,兩者是單獨存在的,過程一般是用來訪問數據的。像這里講到的使用一個過程來實現數據結構真是一件奇怪的事情。


先看看題目給出的樣例吧,題目說到,如果我們有下面這些個過程定義,那么,對于任意的x 和y , (car(cons x y))都將產生x:


(define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p)))


上面的代碼閱讀起來還是有些困難的,因為涉及到兩個lambda過程

就像題目說到的,為了更好地理解這里的過程,建議使用代換的方式,我們來看看代換的過程:


(car(cons x y))

=> (car (lambda (m) (m x y)))

=> ((lambda (m) (m x y)) (lambda (p q) p))

=> ((lambda (p q) p) x y)

=>((lambda (x y) x))

=> x


我第一次做完這個代換過程后都覺得不可思議,感覺就像是眼睜睜看著撲克牌從劉謙手里消失一樣。


這里cons返回的是一個lambda函數,這個lambda函數接受一個參數,將這個參數作用于x y。

而car 接受一個參數,將這個參數作用于另一個lambda函數,這個lambda函數接受兩個參數,永遠返回第一個參數。

將cons和car連接起來使用就是“作用于x y,永遠返回第一個參數x”。


這個想明白了以后完成題目就比較簡單了,題目要求我們按這個思路去定義對應cdr過程,我定義的cdr代碼如下:

(define (cdr z) (z (lambda (p q) q)))

意思就是cdr接受一個參數,將這個參數作用于一個lambda過程,該lambda過程接受兩個參數,永遠返回第二個參數。


這樣題目就完成了,不過關于這道題給我們帶來的啟發還是值得我們仔細琢磨。


完成題目容易,理解題目的用意不易。。。。。。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人免费视频播放 | 久久爱综合网 | www.夜夜骑.com | 日本一区二区三区四区视频 | 亚洲成人精品久久 | 亚洲av毛片一区二区三区电影 | 久久精品国产v日韩v亚洲 | 精品一区在线 | 久久久久久亚洲精品视频 | 亚洲免费电影一区 | 久久夜靖品| 国产一二区 | 国产伦精品一区二区三 | 久久国产日韩欧美 | 免费在线观看 av | 啪啪av | 国产99在线播放 | 97自拍偷拍视频 | 亚洲精品视频免费看 | 日韩专区欧美专区 | 成人手机视频在线 | 久久尤物| 秋霞在线观看视频 | 精品国产乱码久久久久久丨区2区 | 黄色电影网站在线观看 | 国产区一区| 蜜桃一区 | 3p视频在线播放 | 国产在线观看一区二区三区 | 极品销魂一区二区三区 | 日韩一级片在线观看 | 黄色片看 | 欧美三级精品 | 国产精品成人国产乱一区 | 精品国产一区二区三区四区在线观看 | 亚洲精品套图 | 欧美日韩一区二区三区不卡 | 欧美久久视频 | 久久91精品国产91久久跳 | 黄色一级大片在线免费看产 | 日韩三级 |