From 03b7cea970d0840a913b6e64a9439fb115dea8d0 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Fri, 22 Nov 2024 11:58:44 +0100 Subject: Fix X.empty S.constant always evaluates its argument. --- src/Data/Array/Mixed/XArray.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/Data/Array') diff --git a/src/Data/Array/Mixed/XArray.hs b/src/Data/Array/Mixed/XArray.hs index 999ccc3..81b92c5 100644 --- a/src/Data/Array/Mixed/XArray.hs +++ b/src/Data/Array/Mixed/XArray.hs @@ -310,8 +310,10 @@ toList1 (XArray arr) = S.toList arr empty :: forall sh a. Storable a => IShX sh -> XArray sh a empty sh | Dict <- lemKnownNatRank sh - = XArray (S.constant (shxToList sh) - (error $ "Data.Array.Mixed.empty: shape was not empty: " ++ show sh)) + , shxSize sh == 0 + = XArray (S.fromVector (shxToList sh) VS.empty) + | otherwise + = error $ "Data.Array.Mixed.empty: shape was not empty: " ++ show sh slice :: SNat i -> SNat n -> XArray (Just (i + n + k) : sh) a -> XArray (Just n : sh) a slice i n (XArray arr) = XArray (S.slice [(fromSNat' i, fromSNat' n)] arr) -- cgit v1.2.3-70-g09d2