>>3
Well, we agree that
controlled effects are a good thing. If a language can, for example, making a guarantee that a function is pure, or, another example, make a guarantee of only a certain
type of side-effect (read/writing from a file/socket/array/hash-table/stdout/some-data-structure), then I would say that language has controlled effects, and agree that this control is useful. Useful for reasoning about the behaviour of a program because it may be more predictable because of the reduced complexity; it may be easier to write test-cases (automated] or manual) for[1]; (a common property of controlled effects) it's easy to imagine a state for a particular procedure; it can be useful for stopping a kind of side-effect that is irreversible.
[1]
QuickCheck: An Automatic Testing Tool for Haskell http://www.md.chalmers.se/~koen/Papers/quick.ps