on master help sign in
Add readSlice in PrimArray
commit806364f3028bfdbf8c71f9754c68d3efeeb40f92 authoradithyaov <adi.obilisetty@gmail.com> dateThu 23 Jan 2020, 15:32 (7 years ago) parent9bab836
2 files changed+10−4
src/Streamly/Internal/Data/Prim/Array.hs+9 streamly.cabal+1−4
src/Streamly/Internal/Data/Prim/Array.hs+9
@@ -33,6 +33,7 @@ module Streamly.Internal.Data.Prim.Array
3333 , toStream
3434 , toStreamRev
3535 , read
36+ , readSlice
3637
3738 , fromListN
3839 , fromList
@@ -188,3 +189,11 @@ read = Unfold step inject
188189 | i == length arr = return D.Stop
189190 step (arr, i) = return $ D.Yield (indexPrimArray arr i) (arr, i + 1)
190191
192+{-# INLINE_NORMAL readSlice #-}
193+readSlice :: (Prim a, Monad m) => Int -> Int -> Unfold m (PrimArray a) a
194+readSlice off len = Unfold step inject
195+ where
196+ inject arr = return (arr, off)
197+ step (arr, i)
198+ | i == min (off + len) (length arr) = return D.Stop
199+ step (arr, i) = return $ D.Yield (indexPrimArray arr i) (arr, i + 1)
streamly.cabal+1−4
@@ -275,6 +275,7 @@ library
275275 other-modules:
276276 Streamly.Data.Array
277277 , Streamly.Data.SmallArray
278+ , Streamly.Data.Prim.Array
278279
279280 -- Memory storage
280281 Streamly.Memory.Malloc
@@ -284,13 +285,9 @@ library
284285 , Streamly.FileSystem.FDIO
285286 , Streamly.FileSystem.FD
286287
287− , Streamly.Data.Prim.Array
288−
289288 exposed-modules:
290289 Streamly.Prelude
291290 , Streamly
292− , Streamly.Data.Array
293− , Streamly.Data.SmallArray
294291 , Streamly.Data.Fold
295292 , Streamly.Data.Unfold
296293 , Streamly.Data.Unicode.Stream