diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2025-12-02 15:15:35 +0100 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2025-12-02 15:15:35 +0100 |
| commit | 9fa5556c4d4dc45ba2417081437bac2d1240132f (patch) | |
| tree | ac3288292088f08c7c06cc48511d7ea439cdedd6 /src/Data/Array/Nested/Ranked | |
| parent | b63642a41f3bddc991d92f2f59b9e3ad53c1f15e (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.hs | 13 |
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] |
