Does the guard
function from RIO-Prelude offer any way to decide the content of a message if it is failing an Either
-Monad? such that e.g
somefun :: Either String Int
somefun = do guard (4+2 == 8); return 2
would return Left someContent
instead where the someContent
is a string that is specified to the guard
in some way.
I haven't been able to find any way according to the documentation, but in case it exists I would be happy to know about it, since guard
could be a good way to avoid nested if
-statements.
This sounds more like a job for when
or unless
:
somefun :: Either String Int
somefun = do
unless (4+2 == 8) $ Left somecontent
return 2
I'd actually rather write when (4+2 /= 8) $ Left somecontent
.