aboutsummaryrefslogtreecommitdiff
path: root/src/Data/Array/Nested/Ranked.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Array/Nested/Ranked.hs')
-rw-r--r--src/Data/Array/Nested/Ranked.hs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/Data/Array/Nested/Ranked.hs b/src/Data/Array/Nested/Ranked.hs
index b77b529..d687983 100644
--- a/src/Data/Array/Nested/Ranked.hs
+++ b/src/Data/Array/Nested/Ranked.hs
@@ -70,16 +70,13 @@ rgenerate sh f
, Refl <- lemRankReplicate sn
= Ranked (mgenerate (shxFromShR sh) (f . ixrFromIxX))
--- TODO: this would be shorter and faster written with rfromVector,
--- but unfortunately we don't have ixrFromLinear
+-- | See 'mgeneratePrim'.
{-# INLINE rgeneratePrim #-}
rgeneratePrim :: forall n a i. (PrimElt a, Num i)
=> IShR n -> (IxR n i -> a) -> Ranked n a
-rgeneratePrim sh f
- | sn@SNat <- shrRank sh
- , Dict <- lemKnownReplicate sn
- , Refl <- lemRankReplicate sn
- = Ranked (mgeneratePrim (shxFromShR sh) (f . ixrFromIxX))
+rgeneratePrim sh f =
+ let g i = f (ixrFromLinear sh i)
+ in rfromVector sh $ VS.generate (shrSize sh) g
-- | See the documentation of 'mlift'.
rlift :: forall n1 n2 a. Elt a