;; segment cons fuction
(define (make-segment start-point end-point) (cons start-point end-point))
(define (start-segment segment) (car segment))
(define (end-segment segment) (cdr segment))
;; point cons fuction
(define (make-point x y) (cons x y))
(define (x-point p) (car p))
(define (y-point p) (cdr p))
;;the mid fuction
(define (midpoint-segment seg)
(let ((start (start-segment seg))
(end (end-segment seg)))
(make-point (average (x-point start)
(x-point end))
(average (y-point start)
(y-point end)))))
;; the average of the two points
(define (average x y)
(/ (+ x y) 2.0))
;; the input fuction
(define (print-point p)
(newline)
(display "(")
(display (x-point p))
(display ",")
(display (y-point p))
(display ")"))
;; init the data
(define start (make-point 1 2))
(define end (make-point 3 4))
(define seg (make-segment start end))
(define mid (midpoint-segment seg))
;; the last thing you do is run the program and input : (print-point mid)
sicp习题2.2
最新推荐文章于 2020-12-29 10:49:33 发布