diff options
-rw-r--r-- | src/Data/Array/Nested.hs | 6 | ||||
-rw-r--r-- | src/Data/Array/Nested/Internal/Ranked.hs | 3 | ||||
-rw-r--r-- | src/Data/Array/Nested/Internal/Shaped.hs | 3 |
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 |