blob: 83b86aafc8b4c748b9a30a0e53612759e256b75b (
plain)
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
53
54
55
56
57
58
59
|
#lang racket
(require "2.rkt")
(define (perimeter rectangle)
(* 2 (+ (len (width rectangle)) (len (height rectangle)))))
(define (area rectangle)
(* (len (width rectangle)) (len (height rectangle))))
;; (define (make-rectangle w h)
;; (cons w h))
;; (define (width rectangle)
;; (car rectangle))
;; (define (height rectangle)
;; (cdr rectangle))
(define (make-rectangle w h)
(lambda (pick)
(if pick w h)))
(define (width rectangle)
(rectangle true))
(define (height rectangle)
(rectangle false))
(define test-rectangle
(make-rectangle
(make-segment
(make-point 0 0) (make-point 2 0))
(make-segment
(make-point 0 0) (make-point 0 2))))
(define (print-rectangle r)
(newline)
(display "rectangle{")
(display "width:")
(display (len (width r)))
(display ",")
(display "height:")
(display (len (height r)))
(display ",")
(display "area:")
(display (area r))
(display ",")
(display "perimeter:")
(display (perimeter r))
(display "}"))
(define (len segment)
(sqrt
(+ (square
(- (x-point (end-segment segment)) (x-point (start-segment segment))))
(square
(- (y-point (end-segment segment)) (y-point (start-segment segment)))))))
(define test-len
(len (make-segment (make-point 0 2) (make-point 0 0))))
(print-rectangle test-rectangle)
|