Blob
1 (define (deriv exp var)2 (cond ((number? exp) 0)3 ((variable? exp)4 (if (same-variable? exp var) 1 0))5 ((sum? exp)6 (make-sum (deriv (addend exp) var)7 (deriv (augend exp) var)))8 ((product? exp)9 (make-sum10 (make-product (multiplier exp)11 (deriv (multiplicand exp) var))12 (make-product (deriv (multiplier exp) var)13 (multiplicand exp))))14 (else15 (error "unknown expression type -- DERIV" exp))))