In Haskell, by contrast, variables of this sort do not exist at all. A name can be bound to
a value, but once assigned, the name simply stands for that value throughout the
program. Nothing is allowed to change.
In Haskell, "variables" are much like the variables in mathematical equations. They may
need to satisfy certain rules, but they are not "counters" or "containers" in the style of
imperative programming. Just to get headed in the right way of thinking, consider some
linear equations like the ones below as an inspiration: