a. 덧셈, 곱셈 및 기타 연산에 대한 미분 함수를 연산 표에 입력시켰다 number?나 variable? 은 연산으로 표시되는 경우와는 구분된다. 이들은 별도로 구분할 연산규칙이 없기때문에 연산 표에 등재할 이유가 없다.
b.
d. get 과 put을 하는 시스템의 변경은 있을 수 있겠지만, 실제로 이들을 등록하고 사용하는 측면에서는 get과 put에 관련된 루틴이외에는 변경할 필요가 없다

b.
(define (install-deriv-package)c.
(define (addend exp) (car exp))
(define (augend exp) (cadr exp))
(define (make-sum s1 s2)
(list '+ s1 s2))
(define (multiplier exp) (car exp))
(define (multiplicand exp) (cadr exp))
(define (make-product p1 p2)
(list '* p1 p2))
(define (deriv-sum exp var)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
(define (deriv-product exp var)
(make-sum (make-product (multipier exp)
(deriv (mltiplicand exp) var))
(make-product (deriv (multiplier exp) var)
(multiplicand exp))))
(put 'deriv '+ deriv-sum)
(put 'deriv '* deriv-product))
(define (make-exponentiation base exponent)
(cond ((=number? base 0) 0)
((=number? base 1) 0)
((=number? exponent 0) 1)
((=number? exponent 1) base)
(else (list '** base exponent))))
(define (base exp)
(car exp))
(define (exponent exp)
(cadr exp))
(define (deriv-exponent exp var)
(make-product (make-product (exponent exp)
(make-exponentiation (base exp)
(- (exponent exp) 1)))))
(put 'deriv '** deriv-exponent)
d. get 과 put을 하는 시스템의 변경은 있을 수 있겠지만, 실제로 이들을 등록하고 사용하는 측면에서는 get과 put에 관련된 루틴이외에는 변경할 필요가 없다

댓글 없음:
댓글 쓰기