As a result of this little thread I have come to another conclusion, and this is just my subjective view. Most of the software that I am interested in seems to live most comfortably with a stateful conception of the world. (The native libraries I find most useful certainly are stateful.) I am reasonably competent with monads and monad transformers in Haskell. But, to be honest, after three years of pluggin away at Haskell, I am not the least convinced that the problem of handling a changing external world in a pure functional language has been successfully solved by those techniques. I always feel as though I am using the robot arm on a space shuttle when a screwdriver would do. (Again, no need to rebut this - I may be wrong or just to stupid to use Haskell effectively - so be it.)
Perhaps in the end I do not really believe that functional programming is the panacea that its devotees claim it to be.