Up to 3.37
This commit is contained in:
parent
3108228b23
commit
0e9f4d2467
|
@ -161,6 +161,18 @@
|
|||
(define (connect connector new-constraint)
|
||||
((connector 'connect) new-constraint))
|
||||
|
||||
(define (celsius-fahrenheit-converter x)
|
||||
(c+ (c* (c/ (cv 9) (cv 5))
|
||||
x)
|
||||
(cv 32)))
|
||||
|
||||
;: (define C (make-connector))
|
||||
;: (define F (celsius-fahrenheit-converter C))
|
||||
|
||||
(define (c+ x y)
|
||||
(let ((z (make-connector)))
|
||||
(adder x y z)
|
||||
z))
|
||||
|
||||
;; 3.33
|
||||
|
||||
|
@ -225,3 +237,37 @@
|
|||
(forget-value! x 'user)
|
||||
(set-value! y 81 'user)
|
||||
(check-equal? (get-value x) 9))
|
||||
|
||||
;; 3.37
|
||||
|
||||
(define (c- x y)
|
||||
(let ((z (make-connector)))
|
||||
(adder z y x)
|
||||
z))
|
||||
|
||||
(define (cv x)
|
||||
(let ((z (make-connector)))
|
||||
(constant x z)
|
||||
z))
|
||||
|
||||
(define (c* x y)
|
||||
(let ((z (make-connector)))
|
||||
(multiplier x y z)
|
||||
z))
|
||||
|
||||
(define (c/ x y)
|
||||
(let ((z (make-connector)))
|
||||
(multiplier z y x)
|
||||
z))
|
||||
|
||||
(module+ test
|
||||
|
||||
(define C (make-connector))
|
||||
(define F (celsius-fahrenheit-converter C))
|
||||
|
||||
(set-value! C -40 'user)
|
||||
(check-equal? (get-value F) -40)
|
||||
|
||||
(forget-value! C 'user)
|
||||
(set-value! F 212 'user)
|
||||
(check-equal? (get-value C) 100))
|
||||
|
|
Loading…
Reference in New Issue