您的位置:首页 > 其它

SICP学习笔记 - 第二章 (2.1)

2012-11-03 23:09 225 查看
基本过程:

(cons n d)
(car x)
(cdr x)


部分习题:

exercise 2.1

(define (make-rat n d)
(let ((g (gcd n d)))
(if (negative? (* n d))
(cons (- (abs (/ n g))) (abs (/ d g)))
(cons (abs (/ n g)) (abs (/ d g))))))


exercise 2.2

(define (average x y)
(/ (+ x y) 2))
(define (make-point x y)
(cons x y))
(define (x-point p)
(car p))
(define (x-point p)
(cdr p))
(define (make-segment start end)
(cons start end))
(define (start-segment segment)
(car segment))
(define (end-segment segment)
(cdr segment))

(define (midpoint-segment segment)
(let ((start-point (start-segment segment))
(end-point (end-segment segment)))
(cons (average (x-point start-point) (x-point end-point))
(average (y-point start-point) (y-point end-point)))))


exercise 2.4

(define (cdr z)
(z (lambda (p q) q)))

;代换模型
(cdr (cons x y))

((lambda (m) (m x y))
(lambda (p q) q))

((lambda (p q) q)
(x y))

y


exercise 2.5

(define (cons x y)
(define (dispatch m)
(cond ((= m 0) x)
((= m 1) y)
(else (* (expt 2 x) (expt 3 y)))))
(dispatch))
(define (car z) (z 0))
(define (cdr z) (z 1))


exercise 2.7

假定 make-interval 的两个参数由小到大排列。

(define (upper-bound interval)
(cdr interval))
(define (lower-bound interval)
(car interval))


exercise 2.8

(define (sub-interval x y)
(let ((xl (lower-bound x))
(xu (upper-bound x))
(yl (lower-bound y))
(yu (upper-bound y)))
(make-interval (- (min xl yl) (max xl yl))
(- (max xu yu) (min xu yu)))))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: