# Monad Maybe?

**Pixel
**
pixel@mandrakesoft.com

*22 Sep 2002 00:40:46 +0200*

"Russell O'Connor" <roconnor@Math.Berkeley.EDU> writes:
>* [To: haskell-cafe@haskell.org]
*>*
*>* Is there a nicer way of writing the following sort of code?
*>*
*>* case (number g) of
*>* Just n -> Just (show n)
*>* Nothing ->
*>* case (fraction g) of
*>* Just n -> Just (show n)
*>* Nothing ->
*>* case (nimber g) of
*>* Just n -> Just ("*"++(show n))
*>* Nothing -> Nothing
*
what about?
listToMaybe $ mapMaybe (\ (f, format) -> fmap format (f g)) l
where l = [ (number, show), (fraction, show), (nimber, (\ n -> "*" ++ show n)) ]
or:
if_just (number g) show $
if_just (fraction g) show $
if_just (nimber g) (\ n -> "*" ++ show n) Nothing
using:
if_just (Just e) f _ = Just(f e)
if_just Nothing _ f = f