Chapter 2, Building Abstractions with Data

Section - 2.2 - Hierarchical Data and the Closure Property

Exercise 2.47


For the first constructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#lang sicp

(define (make-frame origin edge1 edge2)
   (list origin edge1 edge2)
)

(define (origin-frame frame)
   (car frame)
)

(define (edge1-frame frame)
   (car (cdr frame))
)

(define (edge2-frame frame)
   (car (cdr (cdr frame)))
)

Second Constructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#lang sicp

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

(define (edge1-frame frame)
   (car (cdr frame))
)

(define (edge2-frame frame)
   (cdr (cdr frame))
)