aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-10-18 13:02:12 +0200
committerTom Smeding <tom@tomsmeding.com>2024-10-18 13:02:12 +0200
commitc5b11c52ef3353fd64cad337edc67b6287db09fb (patch)
treeb0258180b00ed25ba554fac38b36c5681228ef49
parentf1b28a3090d47c75dd63e05469059b8f871cc10c (diff)
Support arrays of Bool
-rw-r--r--src/Data/Array/Nested/Internal/Mixed.hs6
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