Monad Maybe?

Simon Marlow
Tue, 24 Sep 2002 14:24:47 +0100

> I know this has been written about way too much, but I was=20
> wondering what
> people thought about using 'liftM f' as opposed to '>>=3D=20
> return . f'.  I
> would probably have written Andrew's code using liftM, but I=20
> don't know if
> one is necessarily better than the other.  Does anyone have strong
> thoughts on this?

so, using liftM:

 	(number g >>=3D return . show)


	(liftM show (number g))

	(show `liftM` number g)

but it's important not to get too carried away with abstractions - this
example requires a bit of a trawl around the library documentation for
someone not familiar with liftM.  Personally, unless I was writing
fragments like this a lot, I'd just write it as

	(do r <- number g; return (show r))

Each to his own I suppose.