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!