Control.Monad.Memo.Vector.Unsafe (original) (raw)
Contents
Description
VectorCache - mutable-vector-based [MonadCache](Control-Monad-Memo-Class.html#t:MonadCache)
with unsafe operations.
This is a version of Control.Monad.Memo.Mutable.Vector but implemented using unsafe* vector operations. Faster than default implementation but you must be sure that your code doesn't try to read/write outside vector boundaries.
Synopsis
- type VectorCache s e = Cache Vector s e
- class MaybeLike e v => VectorMemo v e | v -> e
- unsafeEvalVectorMemo :: (PrimMonad m, VectorMemo v e) => VectorCache (PrimState m) e m a -> Int -> m a
- unsafeRunVectorMemo :: (PrimMonad m, VectorMemo v e) => VectorCache (PrimState m) e m a -> Int -> m (a, Vector (PrimState m) e)
- type UVectorCache s e = Cache UVector s e
- class MaybeLike e v => UVectorMemo v e | v -> e
- unsafeEvalUVectorMemo :: (PrimMonad m, UVectorMemo v e, MVector UVector e) => UVectorCache (PrimState m) e m a -> Int -> m a
- unsafeRunUVectorMemo :: (PrimMonad m, UVectorMemo v e, MVector UVector e) => UVectorCache (PrimState m) e m a -> Int -> m (a, UVector (PrimState m) e)
- newtype Container vec = Container {
- toVector :: vec
}
- toVector :: vec
- type Cache vec k e = ReaderCache (Container (vec k e))
- genericUnsafeEvalVectorMemo :: (MaybeLike e v, PrimMonad m, MVector c e) => Cache c (PrimState m) e m a -> Int -> m a
- genericUnsafeRunVectorMemo :: (MaybeLike e v, PrimMonad m, MVector c e) => Cache c (PrimState m) e m a -> Int -> m (a, c (PrimState m) e)
VectorCache for boxed types
unsafeEvalVectorMemoSource
Evaluate computation using mutable boxed vector and unsafe operations
Vector length must covers all possible keys used in computation otherwise the behaviour is undefined (i.e. segfault)
unsafeRunVectorMemoSource
Evaluate computation using mutable boxed vector and unsafe operations. It also returns the final content of the vector cache
Vector length must covers all possible keys used in computation otherwise the behaviour is undefined (i.e. segfault)
UVectorCache for unboxed types
unsafeEvalUVectorMemoSource
Evaluate computation using mutable unboxed vector and unsafe operations
Vector length must covers all possible keys used in computation otherwise the behaviour is undefined (i.e. segfault)
unsafeRunUVectorMemoSource
Evaluate computation using mutable boxed vector and unsafe operations. It also returns the final content of the vector cache
Vector length must covers all possible keys used in computation otherwise the behaviour is undefined (i.e. segfault)