Fundamentalist[3] functional programming is founded on eschewing side-effects or impurities.
A side-effect is any function which acts on unstated free variables e.g. iterators, loops, uncontrolled I/O.
Consider java.lang.String
, which we say is immutable. Really, we are saying all of its methods
are referentially transparent.
Referential transparency (or purity) is the anti-thesis of side-effects (or impurity).