
This is a matter that I genuinely at the present time do not grasp and I am hoping that some of you who are more familiar with the Haskell language may be able to help enlighten me. I feel the question to be an important one. What material benefit does Haskell derive from being a "pure" functional language as opposed to an impure one? Please provide examples as I require instruction.
I think the STM monad is one of the greatest examples of why Haskell's approach to side-effects is a resounding success. Without having to change anything to the language and compiler, i.e. as a mere library addition (more or less), you get a concurrency system with optimistic synchronization, where all the needed invariants are trivially enforced by the type-system: - no prints or other un-revertable side effects in transactions. - all accesses to shared variables are protected by a transaction. - ... Monads aren't always perfect when it comes to side-effects, but in the context of STM, they really shine. Stefan