|There's more than one way to do things
Re^8: Is it worth using Monads in Perl ? and what the Monads are ?by gaal (Parson)
|on Jun 14, 2007 at 16:27 UTC
I don't think we're disagreeing much on the technical side. There is one point I keep getting back to, which is that Haskell lets you do a lot of effectual computation without evoking the IO monad. Take STM for example: this is a way of sharing information across threads. It has great benefits over synchronization by explicit locks. But it doesn't allow you to do just any IO in the threads, so it doesn't fit all applications. But it does help terrifically with some! The takeaway is that in the imperative world, all side effects are equal in their, uh, effect on purity. If you write to a global you may as well write to a socket. With Haskell, this is not the case; you are encouraged to do more in other monads or in pure functions. STM's one example, parsing's another. If you didn't have the power of the typechecker you might find yourself wanting to parse something but thinking of ungetc!
About condescension: being a newbie often sucks! But I don't know that Haskell is worse than other language communities in this regard. Give the C FAQ a look, it's not exactly innocent of snark. In my experience the Perl community is by far the most welcoming for newcomers, but it has its share of idiots too...