2.1 (define (make-rat-better n d) (if (< n 0) ( if(< d 0) (cons (- 0 n) (- 0 d)) (cons n d) ) (if (< d 0) (cons (- 0 n) (- 0 d)) (cons n d)) ) ) 2.2 (define (make-segment n d) (make-rat n d)) (define (start-segment x) (car x)) (define (end-segment x) (cdr x)) (newline) (start-segment (make-segment 1 3)) (end-segment (make-segment 1 3)) (define (make-point x y) (make-rat x y)) (define (x-point n) (car n)) (define (y-point n) (cdr n)) (define (midle-point a b) (make-rat (/ (+ (car a) (car b) ) 2 ) (/ (+ (cdr a) (cdr b) ) 2 ) ) ) (midle-point (make-point 7 8) (make-point -1 -4)) 2.3 (define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) (define (cdr z) (z (lambda (p q) q))) (car (cons 1 2)) (cdr (cons 1 2)) 2.4 (define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) (define (cdr z) (z (lambda (p q) q))) (car (cons 1 2)) (cdr (cons 1 2)) 2.5 (define (power x n) (if (= n 0) 1 (* x (power x (- n 1))) ) ) (power 2 4) (define (cons a b) (define (dispath m) (cond ((= m 0) (power 2 a)) ((= m 1) (power 3 b)) (else (* (power 2 a) (power 3 b))) ) ) dispath ) (cons 0 2) (define (car x) (x 0)) (define (cdr x) (x 1)) (car (cons 2 2)) (cdr (cons 2 2))
SICP Exercise 2.1-5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.