Copyright | (c) 2020 Composewell Technologies |
---|---|
License | BSD-3-Clause |
Maintainer | streamly@composewell.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
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
- module Streamly.Internal.Data.Array.Foreign.Mut.Type
- splitOn :: (MonadIO m, Storable a) => (a -> Bool) -> Array a -> SerialT m (Array a)
- genSlicesFromLen :: forall m a. (Monad m, Storable a) => Int -> Int -> Unfold m (Array a) (Int, Int)
- getSlicesFromLen :: forall m a. (Monad m, Storable a) => Int -> Int -> Unfold m (Array a) (Array a)
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
:: 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
:: 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