aboutsummaryrefslogtreecommitdiff
path: root/src/Data/Array/Nested/Ranked
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-12-02 15:15:35 +0100
committerTom Smeding <tom@tomsmeding.com>2025-12-02 15:15:35 +0100
commit9fa5556c4d4dc45ba2417081437bac2d1240132f (patch)
treeac3288292088f08c7c06cc48511d7ea439cdedd6 /src/Data/Array/Nested/Ranked
parentb63642a41f3bddc991d92f2f59b9e3ad53c1f15e (diff)
Let sh*FromList functions print proper error messages
Diffstat (limited to 'src/Data/Array/Nested/Ranked')
-rw-r--r--src/Data/Array/Nested/Ranked/Shape.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/Data/Array/Nested/Ranked/Shape.hs b/src/Data/Array/Nested/Ranked/Shape.hs
index 02d65b6..2fea8c4 100644
--- a/src/Data/Array/Nested/Ranked/Shape.hs
+++ b/src/Data/Array/Nested/Ranked/Shape.hs
@@ -130,11 +130,14 @@ listrAppend ZR sh = sh
listrAppend (x ::: xs) sh = x ::: listrAppend xs sh
listrFromList :: SNat n -> [i] -> ListR n i
-listrFromList SZ [] = ZR
-listrFromList (SS n) (i : is) = i ::: listrFromList n is
-listrFromList n l = error $ "listrFromList: Mismatched list length (type says "
- ++ show (fromSNat n) ++ ", list has length "
- ++ show (length l) ++ ")"
+listrFromList topsn topl = go topsn topl
+ where
+ go :: SNat n' -> [i] -> ListR n' i
+ go SZ [] = ZR
+ go (SS n) (i : is) = i ::: go n is
+ go _ _ = error $ "listrFromList: Mismatched list length (type says "
+ ++ show (fromSNat topsn) ++ ", list has length "
+ ++ show (length topl) ++ ")"
{-# INLINEABLE listrToList #-}
listrToList :: ListR n i -> [i]