"Russell O'Connor" <[EMAIL PROTECTED]> writes:

> [To: [EMAIL PROTECTED]]
> 
> 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
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to