練習2.4
(define (new-cons x y)練習2.5(lambda (m) (m x y)))
(define (new-car z)
(z (lambda (p q) p)))
;; 使用代換模型,(new-car (new-cons x y))的變換過程如下
(new-car (new-cons x y))
==> (new-car (lambda (m) (m x y)))
==> ((lambda (m) (m x y)) (lambda (p q) p))
==> 此時即為使用過程(lambda (p q) p)去處理(x y)
==> 即等價於定義過程
(define (test p q) p)
然後計算
(test x y)
==> 所以(new-car (new-cons x y))將得到x
;; 由上面的分析, 可以得到
(define (new-car z)
(z (lambda (p q) q)))
(define (new-cons a b)練習2.6(* (expt 2 a) (expt 3 b)))
(define (cons-iter x k n)
(if (= (remainder x k) 0)
(cons-iter (/ x k) k (+ n 1))
n))(define (new-car z)
(cons-iter z 2 0))
(define (new-cdr z)
(cons-iter z 3 0))
(define zero (lambda (f) (lambda (x) x)))(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
;; 由以上定義的過程以及 1 = 0 + 1 可得如下過程
(define one (add-1 zero))
;; 進行代入變換
(add-1 zero)
==> (lambda (f) (lambda (x) (f ((zero f) x))))
==> (lambda (f) (lambda (x) (f ((lambda (x) x) x))))
==> (lambda (f) (lambda (x) (f x)))
;; 則可得如下過程
(define one (lambda (f) (lambda (x) (f x))))
;; 進而得到如下過程
(define two (lambda (f) (lambda (x) (f (f x)))))
;; 採用代入的方式進行驗證
(define two (add-1 one))
(add-1 one)
==> (lambda (f) (lambda (x) (f ((one f) x))))
==> (lambda (f) (lambda (x) (f ((lambda (x) (f x)) x))))
==> (lambda (f) (lambda (x) (f (f x))))
;; 進而得到對於n的定義
(define n (lambda (f) (lambda (x) (f (f ... (f x))))))
;; 則可得到如下過程
(define n (lambda (f) (lambda (x) ((n f) x))))
;; 而對於n+m, 即為對n呼叫m次add-1
;; 對於n+1
(add-1 n)
==> (lambda (f) (lambda (x) (f ((n f) x))))
==> (lambda (f) (lambda (x) ((one f) ((n f) x))))
(add-1 (n+1))
==> (lambda (f) (lambda (x) ((two f) ((n f) x))))
(add-1 (n+m))
==> (lambda (f) (lambda (x) ((m f) ((n f) x))))
;; 所以推得加法的過程如下
(define (add n m)
(lambda (f) (lambda (x) ((n f) ((m f) x)))))
;; 確實如書中所說:in case representing pairs as procedures wasn't mind-boggling enough,
;; consider that ......
;; alonzo church真乃神人也!
2 1 3 資料意味著什麼
2.1.3 資料意味著什麼 我們開始有理數的實現,在2.1.1部分,通過使用三個未特定的程式make rat,numer,denom,實現了add rat,sub rat等等.在那一點上,我們認為操作被定義在資料物件分子,分母和有理數。它們的行為被這三個程式指定。但是資料的準確的含義是什麼呢?說能被...
SICP學習筆記(1 1 4 1 1 5)
sicp學習筆記 1.1.4 1.1.5 周銀輝 書接上一回,這裡是我在學習1.1.4 1.1.5時的一些筆記 1,標準過程與復合過程 以 scheme為例,作為一門語言,其內建了一些原始過程 或稱之為標準的過程 與scheme環境中,比如,實際上與某個內建過程關聯 繫結 了起來,該過程接收兩個引數...
SICP學習筆記(1 1 1 1 1 3)
sicp學習筆記 1.1.1 1.1.3 周銀輝 sicp,即structure and interpretation of computer programs,電腦程式的構造和解釋,是mit 麻省理工學院 一門經典課程,相信很多程式愛好者都讀過,最近我也抽空讀了讀,挺有意思的。算是對大學知識 高數...