This question arises out of the question https://softwareengineering.stackexchange.com/questions/25569/is-haskell-worth-learningGenerally a few often repeated statements are made, about how Haskell improves your coding skills in other languages, and furthermore, this is because Haskell is stateless, and that's a good thing.Why?I've seen someone compare this to only typing with the left hand, or perhaps closing your eyes for a day and just relying on touch. Surely there is more to it than that? Does it relate to hardware memory access, or something else which is a big performance gain? 
Why is it good not to rely on changing state?
programming languages;functional programming;haskell
there are at least three big advantages off the top of my head:it makes programs more close to mathematical expressions.  In math, x doesn't change, you just don't know what it is until you solve the equation.In the end, there is state change (after all, that's how the computer works at low level); but it's confined by the language to specific places.  that allows the compiler huge opportunities to move code around to optimize it, since it knows that it doesn't change anything that other code depends on.Concurrent code doesn't need to synchronize to access non-changing data, so concurrency is enhanced, both in SMP shared memory systems (all multicore systems of today), and on loosely tied clusters.