ifM
:: Monad m
=> m
Bool -> m a
-> m a
-> m a
ifM act t e = do
b <- act
if b then t else e
infixl 4 <?>
(<?>) :: Monad m
=> m
Bool -> m a
-> m a
-> m a
(<?>) = ifM
main = anAction <?> do
$ otherAction <?> do
aWZNIDo6IE1vbmFkIG0gPT4gbSBCb29sIC0+IG0gYSAtPiBtIGEgLT4gbSBhCmlmTSBhY3QgdCBlID0gZG8KICBiIDwtIGFjdAogIGlmIGIgdGhlbiB0IGVsc2UgZQoKYW5BY3Rpb24gICAgPSByZXR1cm4gRmFsc2UKb3RoZXJBY3Rpb24gPSByZXR1cm4gVHJ1ZQoKaW5maXhsIDQgPD8+CgooPD8+KSA6OiBNb25hZCBtID0+IG0gQm9vbCAtPiBtIGEgLT4gbSBhIC0+IG0gYQooPD8+KSA9IGlmTQoKbWFpbiA6OiBJTyBTdHJpbmcKbWFpbiA9ICAgIGFuQWN0aW9uIDw/PiBkbwoJCQlwdXRTdHJMbiAiYnJhbmNoIGEiCgkJCXJldHVybiAiYSIKCQkkIG90aGVyQWN0aW9uIDw/PiBkbwoJCQlwdXRTdHJMbiAiYnJhbmNoIGIiCgkJCXJldHVybiAiYiIKCQkkIHJldHVybiAibm9uZSI=