diff options
| author | Tom Smeding <t.j.smeding@uu.nl> | 2024-05-14 13:47:44 +0200 | 
|---|---|---|
| committer | Tom Smeding <t.j.smeding@uu.nl> | 2024-05-14 13:47:44 +0200 | 
| commit | 77ab86ede90938fa43f7f9988ac10f7026440a1c (patch) | |
| tree | 1a7e1e7cbf286d9518893fdf3ad8f382e134ceb9 /src/Data/Array/Nested | |
| parent | d0b8d7c8935dc1bf6fbb09c752707a82bc066808 (diff) | |
reshapelast-with-inat
Diffstat (limited to 'src/Data/Array/Nested')
| -rw-r--r-- | src/Data/Array/Nested/Internal.hs | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/src/Data/Array/Nested/Internal.hs b/src/Data/Array/Nested/Internal.hs index 350eb6f..d041aff 100644 --- a/src/Data/Array/Nested/Internal.hs +++ b/src/Data/Array/Nested/Internal.hs @@ -540,6 +540,11 @@ mslice ivs = mlift $ \_ -> X.slice ivs  mrev1 :: (KnownShapeX (n : sh), Elt a) => Mixed (n : sh) a -> Mixed (n : sh) a  mrev1 = mlift $ \_ -> X.rev1 +mreshape :: forall sh sh' a. (KnownShapeX sh, KnownShapeX sh', Elt a) +         => IShX sh' -> Mixed sh a -> Mixed sh' a +mreshape sh' = mlift $ \(_ :: Proxy shIn) -> +                        X.reshapePartial (knownShapeX @sh) (knownShapeX @shIn) sh' +  mliftPrim :: (KnownShapeX sh, Storable a)            => (a -> a)            -> Mixed sh (Primitive a) -> Mixed sh (Primitive a) @@ -1083,6 +1088,13 @@ rslice ivs = rlift $ \_ -> X.slice ivs  rrev1 :: (KnownINat n, Elt a) => Ranked (S n) a -> Ranked (S n) a  rrev1 = rlift $ \_ -> X.rev1 +rreshape :: forall n n' a. (KnownINat n, KnownINat n', Elt a) +         => IShR n' -> Ranked n a -> Ranked n' a +rreshape sh' (Ranked arr) +  | Dict <- lemKnownReplicate (Proxy @n) +  , Dict <- lemKnownReplicate (Proxy @n') +  = Ranked (mreshape (shCvtRX sh') arr) +  -- ====== API OF SHAPED ARRAYS ====== -- @@ -1292,3 +1304,10 @@ sslice ivs = slift $ \_ -> X.slice ivs  srev1 :: (KnownNat n, KnownShape sh, Elt a) => Shaped (n : sh) a -> Shaped (n : sh) a  srev1 = slift $ \_ -> X.rev1 + +sreshape :: forall sh sh' a. (KnownShape sh, KnownShape sh', Elt a) +         => ShS sh' -> Shaped sh a -> Shaped sh' a +sreshape sh' (Shaped arr) +  | Dict <- lemKnownMapJust (Proxy @sh) +  , Dict <- lemKnownMapJust (Proxy @sh') +  = Shaped (mreshape (shCvtSX sh') arr) | 
