diff options
author | Tom Smeding <tom@tomsmeding.com> | 2024-10-18 13:02:12 +0200 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2024-10-18 13:02:12 +0200 |
commit | c5b11c52ef3353fd64cad337edc67b6287db09fb (patch) | |
tree | b0258180b00ed25ba554fac38b36c5681228ef49 /src | |
parent | f1b28a3090d47c75dd63e05469059b8f871cc10c (diff) |
Support arrays of Boolsingletons
Diffstat (limited to 'src')
-rw-r--r-- | src/Data/Array/Nested/Internal/Mixed.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Data/Array/Nested/Internal/Mixed.hs b/src/Data/Array/Nested/Internal/Mixed.hs index 731dbef..a979bf1 100644 --- a/src/Data/Array/Nested/Internal/Mixed.hs +++ b/src/Data/Array/Nested/Internal/Mixed.hs @@ -112,6 +112,7 @@ class (Storable a, Elt a) => PrimElt a where toPrimitive = coerce -- [PRIMITIVE ELEMENT TYPES LIST] +instance PrimElt Bool instance PrimElt Int instance PrimElt Int64 instance PrimElt Int32 @@ -147,6 +148,7 @@ deriving instance (Ord a, Storable a) => Ord (Mixed sh (Primitive a)) instance NFData a => NFData (Mixed sh (Primitive a)) -- [PRIMITIVE ELEMENT TYPES LIST] +newtype instance Mixed sh Bool = M_Bool (Mixed sh (Primitive Bool)) deriving (Eq, Generic) deriving (Show) via (ShowViaPrimitive sh Bool) newtype instance Mixed sh Int = M_Int (Mixed sh (Primitive Int)) deriving (Eq, Generic) deriving (Show) via (ShowViaPrimitive sh Int) newtype instance Mixed sh Int64 = M_Int64 (Mixed sh (Primitive Int64)) deriving (Eq, Generic) deriving (Show) via (ShowViaPrimitive sh Int64) newtype instance Mixed sh Int32 = M_Int32 (Mixed sh (Primitive Int32)) deriving (Eq, Generic) deriving (Show) via (ShowViaPrimitive sh Int32) @@ -157,6 +159,7 @@ newtype instance Mixed sh () = M_Nil (Mixed sh (Primitive ())) deriving (Eq, Gen -- etc. -- [PRIMITIVE ELEMENT TYPES LIST] +deriving instance Ord (Mixed sh Bool) ; instance NFData (Mixed sh Bool) deriving instance Ord (Mixed sh Int) ; instance NFData (Mixed sh Int) deriving instance Ord (Mixed sh Int64) ; instance NFData (Mixed sh Int64) deriving instance Ord (Mixed sh Int32) ; instance NFData (Mixed sh Int32) @@ -183,6 +186,7 @@ data family MixedVecs s sh a newtype instance MixedVecs s sh (Primitive a) = MV_Primitive (VS.MVector s a) -- [PRIMITIVE ELEMENT TYPES LIST] +newtype instance MixedVecs s sh Bool = MV_Bool (VS.MVector s Bool) newtype instance MixedVecs s sh Int = MV_Int (VS.MVector s Int) newtype instance MixedVecs s sh Int64 = MV_Int64 (VS.MVector s Int64) newtype instance MixedVecs s sh Int32 = MV_Int32 (VS.MVector s Int32) @@ -448,6 +452,7 @@ instance Storable a => Elt (Primitive a) where mvecsFreeze sh (MV_Primitive v) = M_Primitive sh . X.fromVector sh <$> VS.freeze v -- [PRIMITIVE ELEMENT TYPES LIST] +deriving via Primitive Bool instance Elt Bool deriving via Primitive Int instance Elt Int deriving via Primitive Int64 instance Elt Int64 deriving via Primitive Int32 instance Elt Int32 @@ -462,6 +467,7 @@ instance Storable a => KnownElt (Primitive a) where mvecsNewEmpty _ = MV_Primitive <$> VSM.unsafeNew 0 -- [PRIMITIVE ELEMENT TYPES LIST] +deriving via Primitive Bool instance KnownElt Bool deriving via Primitive Int instance KnownElt Int deriving via Primitive Int64 instance KnownElt Int64 deriving via Primitive Int32 instance KnownElt Int32 |