問題 2.2
(define (average x y) (/ (+ x y) 2)) (define (make-segment start-point end-point) (cons start-point end-point)) (define (start-segment seg) (car seg)) (define (end-segment seg) (cdr seg)) (define (make-point x y) (cons x y)) (define (x-point p) (car p)) (define (y-point p) (cdr p)) (define (midpoint p1 p2) (make-point (average (x-point p1) (x-point p2)) (average (y-point p1) (y-point p2)))) (define (midpoint-segment segment) (midpoint (start-segment segment) (end-segment segment))) (define (print-point-core p) (display "(") (display (x-point p)) (display ",") (display (y-point p)) (display ")")) (define (print-point p) (print-point-core p) (newline) 'done.) (define (print-segment seg) (print-point-core (start-segment seg)) (display "-") (print-point-core (end-segment seg)) (newline) 'done.)
説明いる?
実行
gosh> (define seg1 (make-segment (make-point 10 10) (make-point 20 20))) seg1 gosh> (print-segment seg1) (10,10)-(20,20) done. gosh> (print-point (midpoint-segment seg1)) (15,15) done.