File tree Expand file tree Collapse file tree 2 files changed +47
-1
lines changed Expand file tree Collapse file tree 2 files changed +47
-1
lines changed Original file line number Diff line number Diff line change 25
25
习题完成情况:
26
26
- 章节一: 43/46
27
27
- 章节二: 88/97
28
- - 章节三: 32 /82
28
+ - 章节三: 33 /82
29
29
- 章节四: TODO
30
30
- 章节五: TODO
31
31
* 运行
Original file line number Diff line number Diff line change
1
+ #lang racket
2
+ (require "constraints.rkt " )
3
+ ;;; c = (a + b) * 0.5
4
+
5
+ (define (averager a b c)
6
+ (let ((sum (make-connector))
7
+ (half (make-connector))
8
+ )
9
+ (constant 0.5 half)
10
+ (adder a b sum)
11
+ (multiplier sum half c)
12
+ 'ok ))
13
+
14
+ (module+ test
15
+ (require rackunit)
16
+
17
+ (test-case "Test for averager with a and b are set "
18
+ (define a (make-connector))
19
+ (define b (make-connector))
20
+ (define c (make-connector))
21
+ (averager a b c)
22
+ (probe "value a " a)
23
+ (probe "value b " b)
24
+ (probe "value c " c)
25
+ (check-false (has-value? c))
26
+ (set-value! a 2 'user )
27
+ (set-value! b 4 'user )
28
+ (check-equal? (get-value c) 3.0 )
29
+ (check-exn (regexp "Contradiction " ) (lambda () (set-value! a 212 'user )))
30
+ )
31
+
32
+ (test-case "Test for averager with c and b are set "
33
+ (define a (make-connector))
34
+ (define b (make-connector))
35
+ (define c (make-connector))
36
+ (averager a b c)
37
+ (probe "value a " a)
38
+ (probe "value b " b)
39
+ (probe "value c " c)
40
+ (check-false (has-value? c))
41
+ (set-value! b 4 'user )
42
+ (set-value! c 0 'user )
43
+ (check-true (has-value? a))
44
+ (check-equal? (get-value a) -4 )
45
+ )
46
+ )
You can’t perform that action at this time.
0 commit comments