diff options
Diffstat (limited to 'libraries/base/Data/Type/Equality.hs')
-rw-r--r-- | libraries/base/Data/Type/Equality.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libraries/base/Data/Type/Equality.hs b/libraries/base/Data/Type/Equality.hs index 73f8407cb0..69da70b78c 100644 --- a/libraries/base/Data/Type/Equality.hs +++ b/libraries/base/Data/Type/Equality.hs @@ -145,6 +145,27 @@ deriving instance a ~ b => Bounded (a :~: b) data (a :: k1) :~~: (b :: k2) where HRefl :: a :~~: a +-- | @since 4.10.0.0 +deriving instance Eq (a :~~: b) +-- | @since 4.10.0.0 +deriving instance Show (a :~~: b) +-- | @since 4.10.0.0 +deriving instance Ord (a :~~: b) + +-- | @since 4.10.0.0 +instance a ~~ b => Read (a :~~: b) where + readsPrec d = readParen (d > 10) (\r -> [(HRefl, s) | ("HRefl",s) <- lex r ]) + +-- | @since 4.10.0.0 +instance a ~~ b => Enum (a :~~: b) where + toEnum 0 = HRefl + toEnum _ = errorWithoutStackTrace "Data.Type.Equality.toEnum: bad argument" + + fromEnum HRefl = 0 + +-- | @since 4.10.0.0 +deriving instance a ~~ b => Bounded (a :~~: b) + -- | 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. @@ -156,6 +177,10 @@ class TestEquality f where instance TestEquality ((:~:) a) where testEquality Refl Refl = Just Refl +-- | @since 4.10.0.0 +instance TestEquality ((:~~:) a) where + testEquality HRefl HRefl = Just Refl + -- | A type family to compute Boolean equality. Instances are provided -- only for /open/ kinds, such as @*@ and function kinds. Instances are -- also provided for datatypes exported from base. A poly-kinded instance |