SICP問題2.47

listを使用したmake-frameに対する選択子

(define (make-frame origin edge1 edge2)
  (list origin edge1 edge2))
(define (original-frame frame)
  (list-ref frame 0))
(define (edge1-frame frame)
  (list-ref frame 1))
(define (edge2-frame frame)
  (list-ref frame 2))

consを使用したmake-frameに対する選択子

(define make-frame origin edge1 edge2)
  (cons origin (cons edge1 edge2)))
(define (origin-frame frame)
  (car frame))
(define (edge1-frame frame)
  (cadr frame))
(define (edge2-frame frame)
  (cdr (cdr frame)))