Partial Derivatives in LISP

So my old friend and archnemisis is building a calculator, but with LISP (more specifically, the SCHEME dialect). He has come to a problem with partial derivatives, and I must admit it is a devil of a problem.

He programmed a derivative to return several things conditionally

Code:

`(define (deriv (lambda (x) (f)) dx)`

(cond (= f (^ x n)) (* n (^ f (- n 1)))

(= f (ln (abs x))) (^ x -1)

(= f (sin x)) (cos x)

(= f (cos x)) (* (sin x) (-1))

(= f (tan x)) ((^ sec 2) x)

(= f (csc x)) (* (* (-1) (csc x)) (cot x))

(= f (sec x)) (* (sec x) (tan x))

(= f (cot x)) (* ((^ csc 2) x) (-1))

(= f (exp x)) (exp x)

(= f (^ a x)) (* (ln a) (^ a x))))

Thus one has to enter the function (lambda (x) (f)) and has returned several things (he plans to tackle integrals the same way).

I can't figure out for the life of me how to help him make a partial derivative without creating errors!