From 774730c3b2742c59bea532e32f43fa12397a3a15 Mon Sep 17 00:00:00 2001 From: Mikolaj Konarski Date: Sun, 21 Jul 2024 18:47:51 +0200 Subject: Add an awkward extra Typeable constraint that helps comparing shapes --- src/Data/Array/Nested/Internal/Shape.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Data/Array/Nested/Internal/Shape.hs b/src/Data/Array/Nested/Internal/Shape.hs index 7077053..0d75b04 100644 --- a/src/Data/Array/Nested/Internal/Shape.hs +++ b/src/Data/Array/Nested/Internal/Shape.hs @@ -38,6 +38,7 @@ import GHC.IsList (IsList) import GHC.IsList qualified as IsList import GHC.TypeLits import GHC.TypeNats qualified as TN +import Type.Reflection (Typeable) import Data.Array.Mixed.Lemmas import Data.Array.Mixed.Permutation @@ -541,7 +542,7 @@ shsProduct (n :$$ sh) = n `snatMul` shsProduct sh -- | Evidence for the static part of a shape. This pops up only when you are -- polymorphic in the element type of an array. type KnownShS :: [Nat] -> Constraint -class KnownShS sh where knownShS :: ShS sh +class Typeable sh => KnownShS sh where knownShS :: ShS sh instance KnownShS '[] where knownShS = ZSS instance (KnownNat n, KnownShS sh) => KnownShS (n : sh) where knownShS = natSing :$$ knownShS -- cgit v1.2.3-70-g09d2