License | BSD |
---|---|
Maintainer | sweirich@cis.upenn.edu |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- module Generics.RepLib.R
- module Generics.RepLib.R1
- module Generics.RepLib.PreludeReps
- module Generics.RepLib.Derive
- module Generics.RepLib.RepAux
- module Generics.RepLib.SYB.Aliases
- module Generics.RepLib.SYB.Schemes
- module Generics.RepLib.Lib
- module Generics.RepLib.PreludeLib
- data (a :: k) :~: (b :: k) :: forall k. k -> k -> * where
- class TestEquality (f :: k -> *) where
Basic infrastructure
Basic Representations of types
module Generics.RepLib.R
Parameterized Representations of types
module Generics.RepLib.R1
Representations of Prelude Types
module Generics.RepLib.PreludeReps
Template Haskell for deriving representations
module Generics.RepLib.Derive
Libraries for defining Generic Operations
Library code for defining generic operations
module Generics.RepLib.RepAux
Scrap your boilerplate operations
module Generics.RepLib.SYB.Aliases
module Generics.RepLib.SYB.Schemes
Generic Utilities and Applications
Library of generic operations
module Generics.RepLib.Lib
Derivable type classes written as generic operations
module Generics.RepLib.PreludeLib
data (a :: k) :~: (b :: k) :: forall k. k -> k -> * where infix 4 #
Propositional equality. If a :~: b
is inhabited by some terminating
value, then the type a
is the same as the type b
. To use this equality
in practice, pattern-match on the a :~: b
to get out the Refl
constructor;
in the body of the pattern-match, the compiler knows that a ~ b
.
Since: base-4.7.0.0
Instances
TestEquality ((:~:) a :: k -> *) | Since: base-4.7.0.0 |
Defined in Data.Type.Equality | |
(Rep a, Rep b, Sat (ctx a), Sat (ctx b)) => Rep1 ctx (a :~: b) Source # | |
a ~ b => Bounded (a :~: b) | Since: base-4.7.0.0 |
a ~ b => Enum (a :~: b) | Since: base-4.7.0.0 |
Defined in Data.Type.Equality | |
Eq (a :~: b) | |
(a ~ b, Data a) => Data (a :~: b) | Since: base-4.7.0.0 |
Defined in Data.Data gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> (a :~: b) -> c (a :~: b) # gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (a :~: b) # toConstr :: (a :~: b) -> Constr # dataTypeOf :: (a :~: b) -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (a :~: b)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (a :~: b)) # gmapT :: (forall b0. Data b0 => b0 -> b0) -> (a :~: b) -> a :~: b # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> (a :~: b) -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> (a :~: b) -> r # gmapQ :: (forall d. Data d => d -> u) -> (a :~: b) -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> (a :~: b) -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b) # | |
Ord (a :~: b) | |
Defined in Data.Type.Equality | |
a ~ b => Read (a :~: b) | Since: base-4.7.0.0 |
Show (a :~: b) | |
(Rep a, Rep b) => Rep (a :~: b) Source # | |
class TestEquality (f :: k -> *) where #
This class contains types where you can learn the equality of two types from information contained in terms. Typically, only singleton types should inhabit this class.
testEquality :: f a -> f b -> Maybe (a :~: b) #
Conditionally prove the equality of a
and b
.
Instances
TestEquality (TypeRep :: k -> *) | |
Defined in Data.Typeable.Internal | |
TestEquality ((:~:) a :: k -> *) | Since: base-4.7.0.0 |
Defined in Data.Type.Equality | |
TestEquality ((:~~:) a :: k -> *) | Since: base-4.10.0.0 |
Defined in Data.Type.Equality | |
TestEquality R # | |
Defined in Generics.RepLib.RepAux |