diff options
Diffstat (limited to 'src/Data/Array/Nested/Ranked.hs')
| -rw-r--r-- | src/Data/Array/Nested/Ranked.hs | 11 |
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 |
