On 8 May 2011 06:14, Nicholas Tung <[email protected]> wrote:
> Dear all,
>     I'd like to write a function "maybeShow :: a -> Maybe String", which
> runs "show" if its argument is of class Show.

I'm pretty sure this is not readily possible - there might be some
hack through Typeable but that would oblige but Show and Typeable
constraints on the type of "a".



>     The context and motivation for this are as follows. I have a GADT type
> which encapsulates abstract-value computation (or constants or error codes),
> a snippet of which is below.
> data AV t where
>     AVLeft :: AV a -> AV (Either a b)
>     This is used to implement an arrow transformer, and due to Arrows
> mapping all Haskell functions, I cannot put some kind of qualification on
> the constructor, like "AVLeft :: Show a => ...".

Yes you can, from the GHC docs:

http://haskell.org/ghc/docs/7.0-latest/html/users_guide/data-type-extensions.html#gadt

  data Showable where
    MkShowable :: Show a => a -> Showable

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to