Blame


1 665c255d 2023-08-04 jrmu (define *op-table* (make-has-table 'equal))
2 665c255d 2023-08-04 jrmu (define (put op type proc)
3 665c255d 2023-08-04 jrmu (hash-table-put! *op-table* (list op type) proc))
4 665c255d 2023-08-04 jrmu (define (get op type)
5 665c255d 2023-08-04 jrmu (hash-table-get *op-table* (list op type) '()))
6 665c255d 2023-08-04 jrmu
7 665c255d 2023-08-04 jrmu (define (install-deriv-package)
8 665c255d 2023-08-04 jrmu (define (make-sum a1 a2) (list '+ a1 a2))
9 665c255d 2023-08-04 jrmu (define (addend s) (car s))
10 665c255d 2023-08-04 jrmu (define (augend s) (cadr s))
11 665c255d 2023-08-04 jrmu (define (make-product m1 m2) (list '* m1 m2))
12 665c255d 2023-08-04 jrmu (define (multiplier p) (car p))
13 665c255d 2023-08-04 jrmu (define (multiplicand p) (cadr p))
14 665c255d 2023-08-04 jrmu (define (deriv-sum exp var)
15 665c255d 2023-08-04 jrmu (make-sum (deriv (addend exp) var)
16 665c255d 2023-08-04 jrmu (deriv (augend exp) var)))
17 665c255d 2023-08-04 jrmu (define (deriv-product exp var)
18 665c255d 2023-08-04 jrmu (make-sum
19 665c255d 2023-08-04 jrmu (make-product (multiplier exp)
20 665c255d 2023-08-04 jrmu (deriv (multiplicand exp) var))
21 665c255d 2023-08-04 jrmu (make-product (deriv (multiplier exp) var)
22 665c255d 2023-08-04 jrmu (multiplicand exp))))
23 665c255d 2023-08-04 jrmu (define (make-exponentiation base exp)
24 665c255d 2023-08-04 jrmu (list '** base exp))
25 665c255d 2023-08-04 jrmu (define (base s) (car s))
26 665c255d 2023-08-04 jrmu (define (exponent s) (cadr s))
27 665c255d 2023-08-04 jrmu (define (deriv-exponentiation exp var)
28 665c255d 2023-08-04 jrmu (make-product
29 665c255d 2023-08-04 jrmu (make-product
30 665c255d 2023-08-04 jrmu (exponent exp)
31 665c255d 2023-08-04 jrmu (make-exponentiation
32 665c255d 2023-08-04 jrmu (base exp)
33 665c255d 2023-08-04 jrmu (- (exponent exp) 1)))
34 665c255d 2023-08-04 jrmu (deriv (base exp) var)))
35 665c255d 2023-08-04 jrmu (put 'deriv '** deriv-exponentiation)
36 665c255d 2023-08-04 jrmu (put 'deriv '+ deriv-sum)
37 665c255d 2023-08-04 jrmu (put 'deriv '* deriv-product))
38 665c255d 2023-08-04 jrmu