Exercise 2.56. Show how to extend the basic differentiator to handle more kinds of expressions. For instance, implement the differentiation rule by adding a new clause to the deriv program and defining appropriate procedures exponentiation?, base, exponent, and make-exponentiation. (You may use the symbol ** to denote exponentiation.) Build in the rules that anything raised to the power 0 is 1 and anything raised to the power 1 is the thing itself. ———————————————————————————————————————————————————————————————————————— (define (deriv exp var) (cond ... ((exponentiation? exp) (let ((n (exponent exp)) (u (base exp))) (make-product (make-product n (make-exponentiation u (- n 1))) (deriv u var)))) ...)) (define (exponentiation? x) (and (pair? x) (eq? (car x) '**))) (define (base exponentiation) (cadr exponentiation)) (define (exponent exponentiation) (caddr exponentiation)) (define (make-exponentiation base exponent) (cond ((=number? base 1) 1) ((=number? base 0) 0) ((=number? exponent 0) 1) ((=number? exponent 1) base) ((and (number? base) (number? exponent)) (expt base exponent)) (else (list '** base exponent))))