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