aboutsummaryrefslogtreecommitdiff
path: root/src/Data/Array
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Array')
-rw-r--r--src/Data/Array/Nested.hs6
-rw-r--r--src/Data/Array/Nested/Internal/Ranked.hs3
-rw-r--r--src/Data/Array/Nested/Internal/Shaped.hs3
3 files changed, 10 insertions, 2 deletions
diff --git a/src/Data/Array/Nested.hs b/src/Data/Array/Nested.hs
index 7eb7b18..e4bd517 100644
--- a/src/Data/Array/Nested.hs
+++ b/src/Data/Array/Nested.hs
@@ -18,7 +18,7 @@ module Data.Array.Nested (
rlift, rlift2,
-- ** Conversions
rtoXArrayPrim, rfromXArrayPrim,
- rcastToShaped,
+ rcastToShaped, rtoMixed,
rfromOrthotope, rtoOrthotope,
-- * Shaped arrays
@@ -39,7 +39,7 @@ module Data.Array.Nested (
slift, slift2,
-- ** Conversions
stoXArrayPrim, sfromXArrayPrim,
- stoRanked,
+ stoRanked, stoMixed,
sfromOrthotope, stoOrthotope,
-- * Mixed arrays
@@ -78,6 +78,8 @@ module Data.Array.Nested (
KnownPerm(..),
NumElt, FloatElt,
Rank,
+ Replicate,
+ MapJust,
) where
import Prelude hiding (mappend, mconcat)
diff --git a/src/Data/Array/Nested/Internal/Ranked.hs b/src/Data/Array/Nested/Internal/Ranked.hs
index 735d1a3..ffa1cea 100644
--- a/src/Data/Array/Nested/Internal/Ranked.hs
+++ b/src/Data/Array/Nested/Internal/Ranked.hs
@@ -524,3 +524,6 @@ mtoRanked arr
convSh (smn :$% (sh :: IShX sh'T))
| Refl <- lemReplicateSucc @(Nothing @Nat) @(Rank sh'T)
= SUnknown (fromSMayNat' smn) :$% convSh sh
+
+rtoMixed :: forall n a. Elt a => Ranked n a -> Mixed (Replicate n Nothing) a
+rtoMixed (Ranked arr) = arr
diff --git a/src/Data/Array/Nested/Internal/Shaped.hs b/src/Data/Array/Nested/Internal/Shaped.hs
index 995507f..023f96c 100644
--- a/src/Data/Array/Nested/Internal/Shaped.hs
+++ b/src/Data/Array/Nested/Internal/Shaped.hs
@@ -459,3 +459,6 @@ mcastToShaped arr targetsh
, Refl <- lemAppNil @(MapJust sh')
, Refl <- lemRankMapJust targetsh
= Shaped (mcast (ssxFromShape (mshape arr)) (shCvtSX targetsh) (Proxy @'[]) arr)
+
+stoMixed :: forall sh a. Shaped sh a -> Mixed (MapJust sh) a
+stoMixed (Shaped arr) = arr