
24 Oct
2006
24 Oct
'06
6:46 a.m.
On 24/10/06, Joachim Breitner
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, dmhouse@gmail.com