Summary
This chapter has shown the integration of the main features of imperative
programming (mutable values, I/O, iterative control structures) into a
functional language. Only mutable values, such as strings, arrays, and
records with mutable fields, can be physically modified. Other values,
once created, are immutable. In this way we obtain read-only (RO) values
for the functional part and read-write (RW) values for the imperative part.
It should be noted that, if we don't make use of the imperative features of
the language, this extension to the functional core does not change the
functional part, except for typing considerations which we can get
around.