My example wasn't exactly orthodox lisp style.
Normally, you should explicitly set any variables you are manipulating, so you'd be writing: (= a (f a)) rather than relying side effects to set it for you (This is especially important when calling functions like sort).
It's such a common idiom that in common lisp I have a ! macro to turn (! f a . b) into (setf a (f a . b)).