Blame


1 12687dd9 2023-08-04 jrmu ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 12687dd9 2023-08-04 jrmu ;; about the language level of this file in a form that our tools can easily process.
3 12687dd9 2023-08-04 jrmu #reader(lib "htdp-advanced-reader.ss" "lang")((modname |40.2|) (read-case-sensitive #t) (teachpacks ((lib "guess-gui.ss" "teachpack" "htdp") (lib "guess.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ((lib "guess-gui.ss" "teachpack" "htdp") (lib "guess.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp")))))
4 12687dd9 2023-08-04 jrmu (define (make-coord x y)
5 12687dd9 2023-08-04 jrmu (local ((define x0 x)
6 12687dd9 2023-08-04 jrmu (define y0 y)
7 12687dd9 2023-08-04 jrmu (define (service-manager msg)
8 12687dd9 2023-08-04 jrmu (cond
9 12687dd9 2023-08-04 jrmu [(equal? msg 'x) x0]
10 12687dd9 2023-08-04 jrmu [(equal? msg 'y) y0]
11 12687dd9 2023-08-04 jrmu [(equal? msg 'set-x) (lambda (new-x) (set! x0 new-x))]
12 12687dd9 2023-08-04 jrmu [(equal? msg 'set-y) (lambda (new-y) (set! y0 new-y))])))
13 12687dd9 2023-08-04 jrmu service-manager))
14 12687dd9 2023-08-04 jrmu
15 12687dd9 2023-08-04 jrmu (define (coord-x acoord)
16 12687dd9 2023-08-04 jrmu (acoord 'x))
17 12687dd9 2023-08-04 jrmu (define (coord-y acoord)
18 12687dd9 2023-08-04 jrmu (acoord 'y))
19 12687dd9 2023-08-04 jrmu (define (coord-x! acoord new-x)
20 12687dd9 2023-08-04 jrmu ((acoord 'set-x) new-x))
21 12687dd9 2023-08-04 jrmu (define (coord-y! acoord new-y)
22 12687dd9 2023-08-04 jrmu ((acoord 'set-y) new-y))
23 12687dd9 2023-08-04 jrmu (define acoord (make-coord 4 5))
24 12687dd9 2023-08-04 jrmu (coord-x acoord)
25 12687dd9 2023-08-04 jrmu (coord-y acoord)
26 12687dd9 2023-08-04 jrmu (coord-x! acoord 3)
27 12687dd9 2023-08-04 jrmu (coord-x acoord)
28 12687dd9 2023-08-04 jrmu (coord-y! acoord 1)
29 12687dd9 2023-08-04 jrmu (coord-y acoord)
30 12687dd9 2023-08-04 jrmu
31 12687dd9 2023-08-04 jrmu (define (make-boyfriend name hair eyes phone)
32 12687dd9 2023-08-04 jrmu (local ((define name0 name)
33 12687dd9 2023-08-04 jrmu (define hair0 hair)
34 12687dd9 2023-08-04 jrmu (define eyes0 eyes)
35 12687dd9 2023-08-04 jrmu (define phone0 phone)
36 12687dd9 2023-08-04 jrmu (define (service-manager msg)
37 12687dd9 2023-08-04 jrmu (cond
38 12687dd9 2023-08-04 jrmu [(symbol=? msg 'name) name0]
39 12687dd9 2023-08-04 jrmu [(symbol=? msg 'hair) hair0]
40 12687dd9 2023-08-04 jrmu [(symbol=? msg 'eyes) eyes0]
41 12687dd9 2023-08-04 jrmu [(symbol=? msg 'phone) phone0]
42 12687dd9 2023-08-04 jrmu [(symbol=? msg 'set-name) (lambda (new-name) (set! name0 new-name))]
43 12687dd9 2023-08-04 jrmu [(symbol=? msg 'set-hair) (lambda (new-hair) (set! hair0 new-hair))]
44 12687dd9 2023-08-04 jrmu [(symbol=? msg 'set-eyes) (lambda (new-eyes) (set! eyes0 new-eyes))]
45 12687dd9 2023-08-04 jrmu [(symbol=? msg 'set-phone) (lambda (new-phone) (set! phone0 new-phone))])))
46 12687dd9 2023-08-04 jrmu service-manager))
47 12687dd9 2023-08-04 jrmu (define (boyfriend-name aboyfriend)
48 12687dd9 2023-08-04 jrmu (aboyfriend 'name))
49 12687dd9 2023-08-04 jrmu (define (boyfriend-hair aboyfriend)
50 12687dd9 2023-08-04 jrmu (aboyfriend 'hair))
51 12687dd9 2023-08-04 jrmu (define (boyfriend-eyes aboyfriend)
52 12687dd9 2023-08-04 jrmu (aboyfriend 'eyes))
53 12687dd9 2023-08-04 jrmu (define (boyfriend-phone aboyfriend)
54 12687dd9 2023-08-04 jrmu (aboyfriend 'phone))
55 12687dd9 2023-08-04 jrmu (define (boyfriend-name! aboyfriend new-name)
56 12687dd9 2023-08-04 jrmu ((aboyfriend 'set-name) new-name))
57 12687dd9 2023-08-04 jrmu (define (boyfriend-hair! aboyfriend new-hair)
58 12687dd9 2023-08-04 jrmu ((aboyfriend 'set-hair) new-hair))
59 12687dd9 2023-08-04 jrmu (define (boyfriend-eyes! aboyfriend new-eyes)
60 12687dd9 2023-08-04 jrmu ((aboyfriend 'set-eyes) new-eyes))
61 12687dd9 2023-08-04 jrmu (define (boyfriend-phone! aboyfriend new-phone)
62 12687dd9 2023-08-04 jrmu ((aboyfriend 'set-phone) new-phone))
63 12687dd9 2023-08-04 jrmu
64 12687dd9 2023-08-04 jrmu (define Aaron (make-boyfriend 'Aaron 'dark-brown 'black 646))
65 12687dd9 2023-08-04 jrmu (boyfriend-name! Aaron 'Arone)
66 12687dd9 2023-08-04 jrmu (boyfriend-hair! Aaron 'black)
67 12687dd9 2023-08-04 jrmu (boyfriend-eyes! Aaron 'gray)
68 12687dd9 2023-08-04 jrmu (boyfriend-phone! Aaron 545)
69 12687dd9 2023-08-04 jrmu (boyfriend-name Aaron)
70 12687dd9 2023-08-04 jrmu (boyfriend-hair Aaron)
71 12687dd9 2023-08-04 jrmu (boyfriend-eyes Aaron)
72 12687dd9 2023-08-04 jrmu (boyfriend-phone Aaron)