On 24/10/06, Joachim Breitner <[EMAIL PROTECTED]> wrote:
Am Dienstag, den 24.10.2006, 00:44 +0300 schrieb Misha Aizatulin:
> hello all,
>
>    why is it not possible to use guards in do-expressions like
>
>        do
>          (a, b) | a == b <- getPair
>          return "a and b are equal"

Probably because it is not well-defined for all Monad what a failure is,
i.e. what to do in the other case. or something. Just my guess.

Exactly the same thing that guards do elsewhere? Count the falsity of
the guard as a pattern match failure. It's precisely the same as
doing, e.g.:

do Just (a, b) <- Nothing
  return "a and b were Just"

Pattern-match failure in a do-block invokes fail in that monad.

--
-David House, [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to