Safe Haskell | Safe |
---|---|

Language | Haskell98 |

- 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 -> ShowS Source

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 t Source