閉包特性
cons
構(gòu)建的序?qū)ζ鋵?shí)是兩個(gè)指針梗醇,分別指向序?qū)Φ膬蓚€(gè)元素捉捅,通過(guò) car
和 cdr
獲取冶匹,cons
構(gòu)建的序?qū)Σ粌H能包含基礎(chǔ)數(shù)據(jù)习劫,同樣也可以包含序?qū)ε匚痢n?lèi)似這種能夠通過(guò)同樣的構(gòu)建方法將自身作為元素構(gòu)建的特性稱(chēng)為閉包特性嚼隘。所以,不僅序?qū)碛虚]包特性袒餐,同樣程式也擁有同樣的特性飞蛹,因?yàn)槌淌降脑匾部梢杂沙淌綐?gòu)成谤狡。
列表與樹(shù)形結(jié)構(gòu)
通過(guò)上述關(guān)于序?qū)χR(shí)點(diǎn)的了解,如果使用 cons
嵌套構(gòu)建將形成一組有序數(shù)據(jù)對(duì)象列表卧檐,它是序列數(shù)據(jù)結(jié)構(gòu)的一種構(gòu)建形式墓懂。除了 cons
嵌套的方式外,Scheme 提供了基礎(chǔ)程式 list
構(gòu)建列表霉囚,也就是說(shuō)下列兩個(gè)結(jié)構(gòu)完全相等:
(list <a1> <a2> ... <an>)
(cons <a1>
(cons <a2>
(cons ...
(cons <an> nil))))
如果對(duì)列表進(jìn)行嵌套構(gòu)建捕仔,將形成樹(shù)形結(jié)構(gòu),例如 (list (list 1 2) (list 3 4))
盈罐,樹(shù)形結(jié)構(gòu)的運(yùn)算是遞歸的榜跌,不過(guò)也可以將葉子節(jié)點(diǎn)轉(zhuǎn)換為列表,便于統(tǒng)一使用列表的操作盅粪。
在列表表達(dá)方式統(tǒng)一的情況下钓葫,可以為其抽象 map
、filter
和 accumulate
等運(yùn)算程式票顾,相當(dāng)于為列表建立抽象屏障础浮,這樣做有利于避免使用列表時(shí)需要關(guān)注它的具體實(shí)現(xiàn),為底層實(shí)現(xiàn)的修改在整個(gè)程序系統(tǒng)上的統(tǒng)一性打下良好基礎(chǔ)奠骄。
分層設(shè)計(jì)
分層設(shè)計(jì)的觀(guān)念指出豆同,在構(gòu)建復(fù)雜系統(tǒng)時(shí)需要按一系列的不同層級(jí)設(shè)計(jì),每個(gè)層級(jí)只組合當(dāng)前層級(jí)的基礎(chǔ)層級(jí)方法含鳞,每個(gè)層級(jí)也只作為上一層級(jí)的基礎(chǔ)層級(jí)使用诱告。在語(yǔ)言的分層設(shè)計(jì)中,每個(gè)層級(jí)都會(huì)運(yùn)用自己的基礎(chǔ)元素民晒,并進(jìn)行組合和抽象精居。
分層設(shè)計(jì)幫助程式變得健壯,它保證了基礎(chǔ)協(xié)議實(shí)現(xiàn)的細(xì)微變化對(duì)于整個(gè)程序是一致的潜必。通俗地講靴姿,分層設(shè)計(jì)使系統(tǒng)的每個(gè)層級(jí)都提供了表達(dá)系統(tǒng)的不同詞匯,以及改變系統(tǒng)的不同能力磁滚。