SICP課後習題2 4理解

2022-07-15 06:09:11 字數 825 閱讀 1244

1

exercise 2.4. here is an alternative procedural representation of pairs. for this representation, verify that (car (cons x y)) yields x for any objects x and y.23

(define (cons x y)

4(lambda (m) (m x y)))56

(define (car z)

7(z (lambda (p q) p)))

89 what is the corresponding definition of cdr? (hint: to verify that this works, make use of the substitution model of section 1.1.5.)

想了很久都沒想明白。今天早上一看,發現自己繞在**了。

cons(x y)的實現是乙個lambda表示式,本質上cons(x y)是一種m操作。m是一種操作沒錯,但是並沒有實際定義m是怎麼樣一種操作,不妨看作是一種操作型別的形參。

z是cons(x y) 引數m=(lambda(p q)p),這裡面具體指定了m實際上是怎麼樣一種操作:這種操作傳入乙個pair,然後返回這個pair的第乙個元素。

講真,這一小節真是驚到我了,對於抽象來說,資料和程式的界限都已經不存在了。我被困住的地方是(car z)中的z到底是什麼呢,是pair型別嗎?是一種操作嗎?都是,也都不是,這已經超出了我以前的認知。

詞不達意,記錄一下,希望我以後回頭看的時候依然能理解,如果對偶然看到的人有幫助,那就太好了。

SICP練習 45 練習2 4

練習2.4 直接運用對比的技巧就可以猜測出相應的cdr表示如下 define cdr z z lambda p q q 但我們還是要按照題中要求用代換模型來檢驗。先來檢驗car的。car cons 0 1 car lambda m 0 1 lambda z z lambda p q p lambda...

SICP練習 45 練習2 4

練習2.4 直接運用對比的技巧就可以猜測出相應的cdr表示如下 define cdr z z lambda p q q 但我們還是要按照題中要求用代換模型來檢驗。先來檢驗car的。car cons 0 1 car lambda m 0 1 lambda z z lambda p q p lambda...

課後習題3 1

一.a.最小生成樹演算法 b.揹包問題 二.a.pow a,n 的蠻力演算法,t n n 如果用n的二進位制位數表示d表示,t n pow 2,d b.計算 pow a,n mod m 的時候,可以在計算一次乘法的同時就進行一次模的運算。這樣就可以保證不會越界。三.習題2.3 4.5.6的演算法 都...