Turns out we're both right.
> Anyway, I decided to write a paper describing LISP both as a programming language and as a formalism for doing recursive function theory.
> One mathematical consideration that influenced LISP was to express programs as applicative expressions built up from variables and constants using functions. I considered it important to make these expressions obey the usual mathematical laws allowing replacement of expressions by expressions giving the same value. The motive was to allow proofs of properties of programs using ordinary mathematical methods. This is only possible to the extent that side-effects can be avoided. Unfortunately, side-effects are often a great convenience when computational efficiency is important, and ``functions'' with side-effects are present in LISP.
From http://www-formal.stanford.edu/jmc/history/lisp/node3.html#S...