some-1.0.2: Existential type: Some
Safe Haskell Safe
Language Haskell2010

Data.GADT.Show

Synopsis

Showing

class GShow t where Source #

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

Instances

Instances details
GShow ( TypeRep :: k -> Type ) Source #
Instance details

Defined in Data.GADT.Internal

Methods

gshowsPrec :: forall (a :: k0). Int -> TypeRep a -> ShowS Source #

GShow ( (:~:) a :: k -> Type ) Source #
Instance details

Defined in Data.GADT.Internal

Methods

gshowsPrec :: forall (a0 :: k0). Int -> (a :~: a0) -> ShowS Source #

GShow ( GOrdering a :: k -> Type ) Source #
Instance details

Defined in Data.GADT.Internal

Methods

gshowsPrec :: forall (a0 :: k0). Int -> GOrdering a a0 -> ShowS Source #

( GShow a, GShow b) => GShow ( Product a b :: k -> Type ) Source #
>>> gshow (Pair Refl Refl :: Product ((:~:) Int) ((:~:) Int) Int)
"Pair Refl Refl"
Instance details

Defined in Data.GADT.Internal

Methods

gshowsPrec :: forall (a0 :: k0). Int -> Product a b a0 -> ShowS Source #

( GShow a, GShow b) => GShow ( Sum a b :: k -> Type ) Source #
>>> gshow (InL Refl :: Sum ((:~:) Int) ((:~:) Bool) Int)
"InL Refl"
Instance details

Defined in Data.GADT.Internal

Methods

gshowsPrec :: forall (a0 :: k0). Int -> Sum a b a0 -> ShowS Source #

Reading

class GRead t where Source #

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.

type GReadS t = String -> [( Some 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 )

gread :: GRead t => String -> ( forall a. t a -> b) -> b Source #

greadMaybe :: GRead t => String -> ( forall a. t a -> b) -> Maybe b Source #

>>> greadMaybe "InL Refl" mkSome :: Maybe (Some (Sum ((:~:) Int) ((:~:) Bool)))
Just (mkSome (InL Refl))
>>> greadMaybe "garbage" mkSome :: Maybe (Some ((:~:) Int))
Nothing

getGReadResult :: Some tag -> ( forall a. tag a -> b) -> b Source #