多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

SICP 習題 (2.4) 解題總結

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

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過程接受兩個參數,永遠返回第二個參數。


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


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


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一区二区自偷自拍视频 | 亚洲天堂免费视频 | 精品99一区二区三区麻豆 | 小说区图片区综合久久亚洲 | 欧美成人区 | 中文字幕2021免费看 | 欧美日韩国产成人精品 | 亚洲精品国产精品国自产网站 | 最新国产中文字幕 | 欧美最猛性xxxxx69交 | 亚洲自拍偷拍专区 | 中文字幕视频在线观看 | 国产精品爱久久久久久久9999 | 国产精品无码专区在线观看 | 国产亚洲视频网站 | 免费午夜视频在线观看 | 亚洲女人天堂 | 曰本一区二区三区 | 97理论三级九七午夜在线观看 | 一区二区三区日本视频 | 精品免费视在线视频观看 | 性欧美videos另类hd高清 | 日本三级黄视频 | 亚洲国产成人精品不卡青青草原 | 中文字幕精品在线 | 欧美深夜在线 | 国产精品jizz观看 | 666精品国产精品亚洲 | 一区二区在线精品免费视频 | 国产在线不卡免费播放 | 在线美女免费观看网站h | 最新中文字幕一区二区乱码 | 欧美精品99毛片免费高清观看 | 日本黄色免费片 | 五月婷婷激情四射 | 国产精品嫩草影院人体模特 | 久久99精品久久久久久秒播 | 免费看羞羞动漫视频网站 | 日韩亚洲一区中文字幕在线 | 中文字幕在线日本 | 国内精品伊人久久久久 |