http://en.wikipedia.org/wiki/Homoiconicity
(setq y '(+ (* 7 (expt x 3) (* x 9) 2 (cos (* 3 x)))))
Predicates - test if something is true.
(defun deriv (expression x)
(cond ((numberp expression) 0)
((equal expression) 1)
((symbolp expression) 0)
((t (let ((op (first expression)
(u (second expression)
(v (third expression ))))))))
(cond ((equal op '+ ) (list '+ (deriv u x) (deriv v x)))
((equal op '* ) (list '+ u (deriv v x) )
(list '+ v (deriv u x) ))
((equal op 'expt) (list '* v (expt expression (- v 1))))
((equal op 'cos) (list 'sin (deriv u x))))))
Are you hungry?
(foodp x)