scheme序對與表的高階

2021-06-21 12:08:48 字數 838 閱讀 6353

左圖表示的是(list (list 1 2) (list 3 4)),右圖表示的是(cons (list 1 2) (list 3 4))。所以當用cdr分別求上面兩個值時,得出的結果分別是'((3 4))和'(3 4)。scheme語言的本身就是用list表示的,例如上面的語句(list 1 2)在直譯器內部就是乙個表,表的三個元素分別是list、1和2。對它們分別求值,數字1、2的值是數字本身,而scheme約定表括號內的第乙個元素是操作符,操作物件就是後面其他的元素,在這裡就是1和2。所以這個式子的求值結果就是有list操作符作用在1和2上,產生包含元素1和2的表,用'( 1 2 )表示。(list (list 1 2) (list 3 4))根據表的閉包特性,表操作符的操作物件可以是另乙個表(此表的值也通過子表達(list x x)求值得到),這裡就是將表'(1 2)和'(3 4)作為元素再生成表'((1 2) (3 4))。到這裡看以看到「資料」和「**」其實是一回事,看你從哪個角度去看,也進一步說明「遞迴」是程式的本質特性之一。

用樹結構來表示上述兩個表,更加形象,尤其涉及到遞迴操作時。

每乙個非葉子節點代表乙個表,左圖有三個表組成,右圖兩個表。

對scheme的一些理解(3)

斷斷續續讀到sicp第三章,覺得scheme有點入門了,不過長久不練習,腦子又不能適應函式式程式設計模式了,覺得3.17 3.18 3.19還比較有意思,貼個自己的解題思路吧。3.17 define count unique pair x let db cons 0 0 define count p...

SICP讀到第二章時對Scheme的理解

在scheme中,乙個括號裡包含了乙個基本單元。括號裡可以包含基本的資料,或者由別的括號圍起來的的基本單元。比如 1 2 它有兩種意義 第一種,它代表了1 2這個運算過程,第二種,它代表了整數3.再比如 define x 1 有兩種意義 第一種,它代表了 將x的值設定成1 這個運算過程。第二種意義,...

前端高階 對盒模型的認識與理解

大多數網頁用的是盒子模型進行布局,所以在乙個網頁製作的過程中最基礎的也正是對盒模型的理解。首先,要了解盒模型的組成 乙個盒模型是由margin 外邊距 border 邊框 padding 內邊距 content 內容 組成的,其中真正屬於盒子的是border padding content。接下來,...