Constructors
Instances2Show, Exception
Show UnsatisfiedConstraintDefined in constraints-0.14.2 · Data.Constraint.DeferrableException UnsatisfiedConstraintDefined in constraints-0.14.2 · Data.Constraint.Deferrable
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05
Moduleconstraints-0.14.2Haskell2010
The idea for this trick comes from Dimitrios Vytiniotis.
Show UnsatisfiedConstraintDefined in constraints-0.14.2 · Data.Constraint.DeferrableException UnsatisfiedConstraintDefined in constraints-0.14.2 · Data.Constraint.DeferrableAllow an attempt at resolution of a constraint at a later time
deferEither :: (p => r) -> Either String rResolve a Deferrable constraint with observable failure.
Deferrable ()Defined in constraints-0.14.2 · Data.Constraint.Deferrable(Deferrable a, Deferrable b) => Deferrable (a, b)Defined in constraints-0.14.2 · Data.Constraint.Deferrable(Deferrable a, Deferrable b, Deferrable c) => Deferrable (a, b, c)Defined in constraints-0.14.2 · Data.Constraint.Deferrable(Typeable k, Typeable a, Typeable b) => Deferrable (a ~ b)Defined in constraints-0.14.2 · Data.Constraint.DeferrableDeferrable homogeneous equality constraints.
Note that due to a GHC bug (https:/ghc.haskell.orgtracghcticket/10343),
using this instance on GHC 7.10 will only work with *-kinded types.
(Typeable i, Typeable j, Typeable a, Typeable b) => Deferrable (a ~~ b)Defined in constraints-0.14.2 · Data.Constraint.DeferrableDeferrable heterogenous equality constraints.
Only available on GHC 8.0 or later.
Kind heterogeneous propositional equality. Like :~:, a :~~: b is
inhabited by a terminating value if and only if a is the same type as b.
Category (:~~:)Defined in ghc-internal-9.1003.0 · GHC.Internal.Control.CategoryTestCoercion ((:~~:) a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.CoercionTestEquality ((:~~:) a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityNFData2 (:~~:)Defined in deepseq-1.5.0.0 · Control.DeepSeqNFData1 ((:~~:) a)Defined in deepseq-1.5.0.0 · Control.DeepSeqa ~~ b => Bounded (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equalitya ~~ b => Enum (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityEq (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equality(Typeable i, Typeable j, Typeable a, Typeable b, a ~~ b) => Data (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.DataOrd (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equalitya ~~ b => Read (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityShow (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityNFData (a :~~: b)Defined in deepseq-1.5.0.0 · Control.DeepSeqa ~ b => Boring (a :~~: b)Defined in boring-0.2.2 · Data.BoringHeterogeneous type equality is Boring too.
HasDict (a ~~ b) (a :~~: b)Defined in constraints-0.14.2 · Data.ConstraintPropositional 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.
Category (:~:)Defined in ghc-internal-9.1003.0 · GHC.Internal.Control.CategoryTestCoercion ((:~:) a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.CoercionTestEquality ((:~:) a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityNFData2 (:~:)Defined in deepseq-1.5.0.0 · Control.DeepSeqNFData1 ((:~:) a)Defined in deepseq-1.5.0.0 · Control.DeepSeqa ~ b => Bounded (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equalitya ~ b => Enum (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityEq (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equality(a ~ b, Data a) => Data (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.DataOrd (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equalitya ~ b => Read (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityShow (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.EqualityNFData (a :~: b)Defined in deepseq-1.5.0.0 · Control.DeepSeqa ~ b => Boring (a :~: b)Defined in boring-0.2.2 · Data.BoringHomogeneous type equality is Boring too.
HasDict (a ~ b) (a :~: b)Defined in constraints-0.14.2 · Data.Constraint