[Haskell-cafe] Alternate instance Show (Maybe a)?
Bjorn Bringert
bringert at cs.chalmers.se
Sat Feb 3 06:18:07 EST 2007
On Feb 2, 2007, at 21:10 , Sergey Zaharchenko wrote:
> Hello list,
>
> Suppose I want show Nothing to return "", and show (Just foo) return
> show foo. I don't seem to be able to. Looks like I either have to use
> some other function name, like `mShow', or have to import Prelude
> hiding
> Maybe, reimplement Maybe, write all the other useful instances
> (Functor,
> Monad) for it, etc. Not particularly hard, but looks ugly. Isn't
> there a
> better solution? I recall some discussion about this, but can't
> find it
> in the archives...
With GHC you can at least avoid rewriting all the instances: make a
newtype, use newtype deriving to get all the instances except Show,
and write your own Show instance.
> {-# OPTIONS_GHC -fglasgow-exts #-}
> newtype MyMaybe a = MyMaybe (Maybe a)
> deriving (Eq,Ord,Monad,Functor)
> instance Show a => Show (MyMaybe a) where
> showsPrec _ (MyMaybe Nothing) = id
> showsPrec n (MyMaybe (Just x)) = showsPrec n x
/Björn
More information about the Haskell-Cafe
mailing list