2.1.2抽象の壁、問題2.2 – SICP(計算機プログラムの構造と解釈)その26

2.1.2 抽象の壁

SICP 2.1.2抽象の壁

問題2.2

線のデータ抽象

(define (make-segment start end)
  (cons start end))

(define (start-segment segment)
  (car segment))

(define (end-segment segment)
  (cdr segment))

点のデータ抽象

(define (make-point x y)
  (cons x y))

(define (x-point p)
  (car p))

(define (y-point p)
  (cdr p))

中間点を返す手続き

(define (midpoint-segment segment)
  (let ((start (start-segment segment))
        (end (end-segment segment)))
       (make-point (average (x-point start) (x-point end))
                   (average (y-point start) (y-point end)))))
; 点の印字 例:(2.0,3.0)
(define (print-point p)
  (newline)
  (display "(")
  (display (x-point p))
  (display ",")
  (display (y-point p))
  (display ")"))

; 始発点
(define start-point (make-point 1 2))

; 終着点
(define end-point (make-point 4 8))

; 線分seg
(define seg (make-segment start-point end-point))

; 線分segの中間点
(print-point (midpoint-segment seg))
gosh> 
(2.5,5.0)#<undef>
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»