summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2023-03-22 18:28:32 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-03-25 20:24:23 -0400
commit656d4cb3e3a450ececcc72ffd2aca6f8e6489102 (patch)
tree8d0ae68f39c2512238e3706e4892b909578eb277
parentc32abd4b936b3dfc61974ed5915c330fe7ed10d5 (diff)
downloadhaskell-656d4cb3e3a450ececcc72ffd2aca6f8e6489102.tar.gz
Add Eq/Ord instances for SSymbol, SChar, and SNat
This implements [CLC proposal #148](https://github.com/haskell/core-libraries-committee/issues/148).
-rw-r--r--libraries/base/GHC/TypeLits.hs18
-rw-r--r--libraries/base/GHC/TypeNats.hs8
-rw-r--r--libraries/base/changelog.md2
3 files changed, 27 insertions, 1 deletions
diff --git a/libraries/base/GHC/TypeLits.hs b/libraries/base/GHC/TypeLits.hs
index 288ec39fc2..ee88741a12 100644
--- a/libraries/base/GHC/TypeLits.hs
+++ b/libraries/base/GHC/TypeLits.hs
@@ -68,7 +68,7 @@ module GHC.TypeLits
) where
-import GHC.Base ( Eq(..), Functor(..), Ord(..), Ordering(..), String
+import GHC.Base ( Bool(..), Eq(..), Functor(..), Ord(..), Ordering(..), String
, (.), otherwise, withDict, Void, (++)
, errorWithoutStackTrace)
import GHC.Types(Symbol, Char, TYPE)
@@ -374,6 +374,14 @@ data KnownSymbolInstance (s :: Symbol) where
knownSymbolInstance :: SSymbol s -> KnownSymbolInstance s
knownSymbolInstance ss = withKnownSymbol ss KnownSymbolInstance
+-- | @since 4.19.0.0
+instance Eq (SSymbol s) where
+ _ == _ = True
+
+-- | @since 4.19.0.0
+instance Ord (SSymbol s) where
+ compare _ _ = EQ
+
-- | @since 4.18.0.0
instance Show (SSymbol s) where
showsPrec p (UnsafeSSymbol s)
@@ -467,6 +475,14 @@ data KnownCharInstance (n :: Char) where
knownCharInstance :: SChar c -> KnownCharInstance c
knownCharInstance sc = withKnownChar sc KnownCharInstance
+-- | @since 4.19.0.0
+instance Eq (SChar c) where
+ _ == _ = True
+
+-- | @since 4.19.0.0
+instance Ord (SChar c) where
+ compare _ _ = EQ
+
-- | @since 4.18.0.0
instance Show (SChar c) where
showsPrec p (UnsafeSChar c)
diff --git a/libraries/base/GHC/TypeNats.hs b/libraries/base/GHC/TypeNats.hs
index 66361d66db..668df1e032 100644
--- a/libraries/base/GHC/TypeNats.hs
+++ b/libraries/base/GHC/TypeNats.hs
@@ -378,6 +378,14 @@ data KnownNatInstance (n :: Nat) where
knownNatInstance :: SNat n -> KnownNatInstance n
knownNatInstance sn = withKnownNat sn KnownNatInstance
+-- | @since 4.19.0.0
+instance Eq (SNat n) where
+ _ == _ = True
+
+-- | @since 4.19.0.0
+instance Ord (SNat n) where
+ compare _ _ = EQ
+
-- | @since 4.18.0.0
instance Show (SNat n) where
showsPrec p (UnsafeSNat n)
diff --git a/libraries/base/changelog.md b/libraries/base/changelog.md
index 1323e589cb..5e0b416cc4 100644
--- a/libraries/base/changelog.md
+++ b/libraries/base/changelog.md
@@ -14,6 +14,8 @@
* Add `Data.Functor.unzip` ([CLC proposal #88](https://github.com/haskell/core-libraries-committee/issues/88))
* Implement more members of `instance Foldable (Compose f g)` explicitly.
([CLC proposal #57](https://github.com/haskell/core-libraries-committee/issues/57))
+ * Add `Eq` and `Ord` instances for `SSymbol`, `SChar`, and `SNat`.
+ ([CLC proposal #148](https://github.com/haskell/core-libraries-committee/issues/148))
## 4.18.0.0 *TBA*
* Shipped with GHC 9.6.1