| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Data.Type.Witness.General.TestHetEquality
Synopsis
- data (a :: k1) :~~: (b :: k2) where
- withHRefl :: forall ka (a :: ka) kb (b :: kb) r. (a :~~: b) -> (a ~~ b => r) -> r
- hetHomoEq :: forall k (a :: k) (b :: k). (a :~~: b) -> a :~: b
- class TestHetEquality (w :: forall k. k -> Type) where
- testHetEquality :: forall ka (a :: ka) kb (b :: kb). w a -> w b -> Maybe (a :~~: b)
- data HetEqual (a :: ka) (b :: kb) where
Documentation
data (a :: k1) :~~: (b :: k2) where infix 4 #
Kind heterogeneous propositional equality. Like :~:, a :~~: b is
inhabited by a terminating value if and only if a is the same type as b.
Since: base-4.10.0.0
Instances
| Category ((:~~:) :: k -> k -> Type) | Since: base-4.10.0.0 |
| TestCoercion ((:~~:) a :: k -> Type) | Since: base-4.10.0.0 |
Defined in Data.Type.Coercion | |
| TestEquality ((:~~:) a :: k -> Type) | Since: base-4.10.0.0 |
Defined in Data.Type.Equality | |
| (Typeable i, Typeable j, Typeable a, Typeable b, a ~~ b) => Data (a :~~: b) | Since: base-4.10.0.0 |
Defined in Data.Data Methods 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 :: forall r r'. (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) # | |
| a ~~ b => Bounded (a :~~: b) | Since: base-4.10.0.0 |
| a ~~ b => Enum (a :~~: b) | Since: base-4.10.0.0 |
Defined in Data.Type.Equality Methods succ :: (a :~~: b) -> a :~~: b # pred :: (a :~~: b) -> a :~~: b # fromEnum :: (a :~~: b) -> Int # enumFrom :: (a :~~: b) -> [a :~~: b] # enumFromThen :: (a :~~: b) -> (a :~~: b) -> [a :~~: b] # enumFromTo :: (a :~~: b) -> (a :~~: b) -> [a :~~: b] # enumFromThenTo :: (a :~~: b) -> (a :~~: b) -> (a :~~: b) -> [a :~~: b] # | |
| a ~~ b => Read (a :~~: b) | Since: base-4.10.0.0 |
| Show (a :~~: b) | Since: base-4.10.0.0 |
| Eq (a :~~: b) | Since: base-4.10.0.0 |
| Ord (a :~~: b) | Since: base-4.10.0.0 |
| HasDict (a ~~ b) (a :~~: b) | |
class TestHetEquality (w :: forall k. k -> Type) where Source #
Methods
testHetEquality :: forall ka (a :: ka) kb (b :: kb). w a -> w b -> Maybe (a :~~: b) Source #
Instances
| TestHetEquality (HetEqual a) Source # | |
Defined in Data.Type.Witness.General.TestHetEquality | |
data HetEqual (a :: ka) (b :: kb) where Source #
Equivalent to :~~:, but can be made an instance of TestHetEquality
Instances
| TestHetEquality (HetEqual a) Source # | |
Defined in Data.Type.Witness.General.TestHetEquality | |