aboutsummaryrefslogtreecommitdiff
path: root/src/Data/Array
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-12-11 21:27:23 +0100
committerTom Smeding <tom@tomsmeding.com>2024-12-11 21:30:05 +0100
commit1b8403a66572c3ed85580ec6745130ad1627042e (patch)
tree31443a6dff3a495877a76e0ba738120b6b586a53 /src/Data/Array
parenta3299c09e0fd12cf73c4a0a9a2ae37b8f69f9b10 (diff)
rcastToMixed
Diffstat (limited to 'src/Data/Array')
-rw-r--r--src/Data/Array/Nested.hs2
-rw-r--r--src/Data/Array/Nested/Internal/Ranked.hs7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/Data/Array/Nested.hs b/src/Data/Array/Nested.hs
index cf60fa1..6bef5f7 100644
--- a/src/Data/Array/Nested.hs
+++ b/src/Data/Array/Nested.hs
@@ -19,7 +19,7 @@ module Data.Array.Nested (
rlift, rlift2,
-- ** Conversions
rtoXArrayPrim, rfromXArrayPrim,
- rcastToShaped, rtoMixed,
+ rcastToShaped, rtoMixed, rcastToMixed,
rfromOrthotope, rtoOrthotope,
-- * Shaped arrays
diff --git a/src/Data/Array/Nested/Internal/Ranked.hs b/src/Data/Array/Nested/Internal/Ranked.hs
index ed89d82..5160078 100644
--- a/src/Data/Array/Nested/Internal/Ranked.hs
+++ b/src/Data/Array/Nested/Internal/Ranked.hs
@@ -534,3 +534,10 @@ mtoRanked arr
rtoMixed :: forall n a. Ranked n a -> Mixed (Replicate n Nothing) a
rtoMixed (Ranked arr) = arr
+
+-- | A more weakly-typed version of 'rtoMixed' that does a runtime shape
+-- compatibility check.
+rcastToMixed :: (Rank sh ~ n, Elt a) => StaticShX sh -> Ranked n a -> Mixed sh a
+rcastToMixed sshx rarr@(Ranked arr)
+ | Refl <- lemRankReplicate (rrank rarr)
+ = mcast sshx arr