streamly-0.8.1.1: Dataflow programming and declarative concurrency
Copyright(c) 2020 Composewell Technologies
LicenseBSD-3-Clause
Maintainerstreamly@composewell.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Streamly.Internal.Data.Array.Foreign.Mut

Description

Unboxed pinned mutable array type for Storable types with an option to use foreign (non-GHC) memory allocators. Fulfils the following goals:

  • Random access (array)
  • Efficient storage (unboxed)
  • Performance (unboxed access)
  • Performance - in-place operations (mutable)
  • Performance - GC (pinned, mutable)
  • interfacing with OS (pinned)
  • Fragmentation control (foreign allocators)

Stream and Fold APIs allow easy, efficient and convenient operations on arrays.

Synopsis

Documentation

splitOn :: (MonadIO m, Storable a) => (a -> Bool) -> Array a -> SerialT m (Array a) Source #

Split the array into a stream of slices using a predicate. The element matching the predicate is dropped.

Pre-release

genSlicesFromLen Source #

Arguments

:: forall m a. (Monad m, Storable a) 
=> Int

from index

-> Int

length of the slice

-> Unfold m (Array a) (Int, Int) 

Generate a stream of array slice descriptors ((index, len)) of specified length from an array, starting from the supplied array index. The last slice may be shorter than the requested length depending on the array length.

Pre-release

getSlicesFromLen Source #

Arguments

:: forall m a. (Monad m, Storable a) 
=> Int

from index

-> Int

length of the slice

-> Unfold m (Array a) (Array a) 

Generate a stream of slices of specified length from an array, starting from the supplied array index. The last slice may be shorter than the requested length depending on the array length.

Pre-release