SICP 問題 2.48(有向線分の構成子、選択子を定義する)

問題

平面上の有向線分はベクタの対 ─原点から線分の始点へ向かうベクタと、始点から線分の終点へ向かうベクタ─ で表現できる。問題 2.46 のベクタ表現を使い、この線分の表現を構成子 make-segment と選択子 start-segment 及び end-segment として定義せよ。

解答

問題 2.46 のベクタ表現は、ベクタの要素を x, y とした場合、それらを cons を使って連結しておくだけ。で、今回の有向線分はベクタを使って始点と終点を持つわけだから、これでいいんでない?

;構成子
(define (make-segment start end)
  (cons start end))

;start-segment選択子
(define (start-segment segment)
  (car segment))

;end-segment選択子
(define (end-segment segment)
  (cdr segment))

以上。