9.4 Imperative programming
Mutation enables a style of programming known as imperative programming. Whereas functional programming is concerned with defining procedures that can be composed to solve a problem, imperative programming is primarily concerned with modifying state in ways that lead to a state that provides a solution to a problem.
The main operation in function programming is application. A functional program applies a series of procedures, passing the outputs of one application as the inputs to the next procedure application. With imperative programming, the primary operation is assignment (performed by
set-mcdr! in Scheme; but typically by an assignment operator, often
=, in languages designed for imperative programming such as Pascal, Algol60, Java, and Python).
The next subsection presents imperative-style versions of some of the procedures we have seen in previous chapters for manipulating lists. The following subsection introduces some imperative control structures.