This article is a complete gem:
http://www.defmacro.org/ramblings/fp.html
That means that the only effect of evaluating a function is its return value and the only thing that affects the return value of a function is its arguments. This is a unit tester’s wet dream. [emphasis added -DB]