On 8/9/07, peterv <bf3@telenet.be> wrote:

IMHO and being a newbie having 20 years of professional C/C++/C# experience but hardly any Haskell experience, I agree with this… I find the monad syntax very confusing, because it looks so much like imperative code, but it isn't. Personally I also liked the Concurrent Clean approach, although this also introduced extra syntax for the compiler, while 'cmd1 >>= \x…' does not. You have to type more, but you see much clearer what is going on.

Yeah, I kind of agree too.  The only way I figured out sortof how to use Monads was to write everything out in >>= syntax.  It was longer and uglier, but it made more sense.
 
That said, I sortof see Haskell as a prototype language, whose good points will be added into other languages.  Every program needs to have a prototype, and Haskell is that.
 
So, whilst I'm tempted to add: an easy language needs to have only a single way of doing anything, so throwing away the "do" syntax makes the language easier by reducing the number of things to learn, actually for a prototype language, the rule is probably "anything goes", and then the best ideas get added to the non-prototype language later on.