SICP學習筆記 2 1 3 資料意味著什麼

2021-09-01 10:15:05 字數 2416 閱讀 2458

練習2.4

(define (new-cons x y)

(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)))

練習2.5

(define (new-cons a b)

(* (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))

練習2.6

(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 麻省理工學院 一門經典課程,相信很多程式愛好者都讀過,最近我也抽空讀了讀,挺有意思的。算是對大學知識 高數...