Safe Haskell  Safe 

Language  Haskell98 
 class GShow t where
 gshows :: GShow t => t a > ShowS
 gshow :: GShow t => t a > String
 newtype GReadResult t = GReadResult {
 getGReadResult :: forall b. (forall a. t a > b) > b
 type GReadS t = String > [(GReadResult t, String)]
 class GRead t where
 greads :: GRead t => GReadS t
 gread :: GRead t => String > (forall a. t a > b) > b
Documentation
Show
like class for 1typeparameter GADTs. GShow t => ...
is equivalent to something
like (forall a. Show (t a)) => ...
. The easiest way to create instances would probably be
to write (or derive) an instance Show (T a)
, and then simply say:
instance GShow t where gshowsPrec = showsPrec
gshowsPrec :: Int > t a > ShowS Source #
newtype GReadResult t Source #
GReadResult  

type GReadS t = String > [(GReadResult t, String)] Source #
GReadS t
is equivalent to ReadS (forall b. (forall a. t a > b) > b)
, which is
in turn equivalent to ReadS (Exists t)
(with data Exists t where Exists :: t a > Exists t
)
Read
like class for 1typeparameter GADTs. Unlike GShow
, this one cannot be
mechanically derived from a Read
instance because greadsPrec
must choose the phantom
type based on the String
being parsed.
greadsPrec :: Int > GReadS t Source #