Exercise 2.57. Extend the differentiation program to handle sums and products of arbitrary numbers of (two or more) terms. Then the last example above could be expressed as (deriv '(* x y (+ x 3)) 'x) Try to do this by changing only the representation for sums and products, without changing the deriv procedure at all. For example, the addend of a sum would be the first term, and the augend would be the sum of the rest of the terms. ———————————————————————————————————————————————————————————————————————— sum? can stay as it is: (define (sum? x) (and (pair? x) (eq? (car x) '+))) make-sum will take an arbitrary number of arguments: (define (make-sum . as) (append '(+) as)) (define (addend s) (if (null? (cdr s)) 0 (cadr s))) (define (augend s) (cond ((null? (cdr s)) 0) ; augend of (+) ((null? (cddr s)) 0) ; augend of (+ x) ((null? (cdddr s)) (caddr s)) (else (append '(+) (cddr s))))) The changes for products would be analogous.