a monadic if or case?

Andrew J Bromage ajb@spamcop.net
Fri, 14 Feb 2003 11:42:14 +1100


G'day all.

On Thu, Feb 13, 2003 at 02:54:42PM -0500, David Roundy wrote:

> That's pretty nice (although not quite as nice as it would be to be able to
> use real ifs with no extra parentheses).  Any idea how to do something like
> this with a case? http://www.haskell.org/mailman/listinfo/haskell-cafe

In the case of Maybe, what you're really trying to do there is a kind of
exception handling.  You may or may not be better off using a real
exception monad transformer on top of IO (or whatever the underlying
monad is).

One possibility is Control.Monad.Error (fromt he MTL).  Here's another
possibility:

  http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/hfl/hfl/mtl/Negate.hs?rev=1.2

I know this didn't directly answer your question, but it's good to
explore the design space.

Cheers,
Andrew Bromage