"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."
Reading above, in his original idea, he clearly had the idea of mathematical pureness for LISP, but for practical reasons the real implementation became one with side-effects.
"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."
Reading above, in his original idea, he clearly had the idea of mathematical pureness for LISP, but for practical reasons the real implementation became one with side-effects.