Safe Haskell | Safe |
---|
- class GShow t where
- gshowsPrec :: Int -> t a -> ShowS
- gshows :: GShow t => t a -> ShowS
- gshow :: GShow t => t a -> String
- type GReadS t = String -> [(forall b. (forall a. t a -> b) -> b, String)]
- class GRead t where
- greadsPrec :: Int -> GReadS t
- greads :: GRead t => GReadS t
- gread :: GRead t => String -> (forall a. t a -> b) -> b
Documentation
Show
-like class for 1-type-parameter 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 -> ShowSSource
type GReadS t = String -> [(forall b. (forall a. t a -> b) -> b, 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 1-type-parameter 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 tSource