Chapter 2, Building Abstractions with Data

Section - 2.1 - Introduction to Data Abstraction

Exercise 2.2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#lang sicp

(define (midpoint-segment seg)
  (make-point (/
                 (+
                    (x-point (start-segment seg))
                    (x-point (end-segment seg))
                 )
                 2
              )
              (/
                 (+
                    (y-point (start-segment seg))
                    (y-point (end-segment seg))
                 )
                 2
              )
   )
)  

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

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

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

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

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

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

(define (print-point p)
  (newline)
  (display "(")
  (display (x-point p))
  (display ",")
  (display (y-point p))
  (display ")")
)

Output:

1
2
3
4
5
6
7
8
9
10
11
> (print-point (
                midpoint-segment (
                                  make-segment 
                                                (make-point 3 5)
                                                (make-point 7 15)
                                  )
                )
  )             


(5,10) ;output