The need for supplemental condition testing and
splitting the pattern matching among the where
clause and the boolean guards is considered
very cumbersome by some.

Yes, it is. But that was only an artificial construction,
meant to work in general. I wouldn't do it that way
really. When an individual problem is reformulated
in the correct monad, the entire program becomes
much simpler.

the (<-) notation isn't overloaded at all really, any
more than it is in list comprehensions. <- always
means monadic bind. it is fully general in 'do'.
restricted to the list monad in list comprehensions,
and restricted to something like the exit monad you
mention in pattern guards. They are all consistent
uses of (<-).

No, they are not the same. Bind in a list comprehension
translates to the exact same bind in do notation.
I cannot think of any translation of pattern guards for
which the same thing is true. For example, in my
construction, pat <- e translates to pat <- return (e).
That is a very significant semantic difference.

-Yitz
_______________________________________________
Haskell-prime mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to