-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Efficient multidimensional arrays -- -- This library provides efficient multidimensional arrays. All arrays -- are 0-based and indexed using repa-shapes. -- -- Please note that this version only has the name (and author) in common -- with the previous 0.0.4.0 version. The basic idea of the library -- remains the same: provide efficient access to immutable arrays. @package PrimitiveArray @version 0.1.1.2 -- | Primitive arrays with a small set of operations. Modelled after repa -- arrays and indexing. -- -- Array indexing is between [i..j] per dimension. -- -- All operations are UNSAFE. In interpreted code, assert provides -- a safety net. module Data.PrimitiveArray class Shape sh => PrimArrayOps sh elm where { data family PrimArray sh elm :: *; } unsafeIndex :: PrimArrayOps sh elm => PrimArray sh elm -> sh -> elm bounds :: PrimArrayOps sh elm => PrimArray sh elm -> (sh, sh) inBounds :: PrimArrayOps sh elm => PrimArray sh elm -> sh -> Bool fromAssocs :: PrimArrayOps sh elm => sh -> sh -> elm -> [(sh, elm)] -> PrimArray sh elm assocs :: PrimArrayOps sh elm => PrimArray sh elm -> [(sh, elm)] class (PrimMonad m, Shape sh) => PrimArrayOpsM sh elm m where { data family PrimArrayM sh elm m :: *; } readM :: PrimArrayOpsM sh elm m => PrimArrayM sh elm m -> sh -> m elm writeM :: PrimArrayOpsM sh elm m => PrimArrayM sh elm m -> sh -> elm -> m () fromAssocsM :: PrimArrayOpsM sh elm m => sh -> sh -> elm -> [(sh, elm)] -> m (PrimArrayM sh elm m) unsafeFreezeM :: PrimArrayOpsM sh elm m => PrimArrayM sh elm m -> m (PrimArray sh elm) boundsM :: PrimArrayOpsM sh elm m => PrimArrayM sh elm m -> (sh, sh) inBoundsM :: PrimArrayOpsM sh elm m => PrimArrayM sh elm m -> sh -> Bool (!) :: PrimArrayOps sh elm => PrimArray sh elm -> sh -> elm module Data.PrimitiveArray.Unboxed instance (Read elm, Read sh, Unbox elm) => Read (PrimArray sh elm) instance (Show elm, Show sh, Unbox elm) => Show (PrimArray sh elm) instance (Unbox elm, Shape sh) => PrimArrayOpsM sh elm IO instance (Unbox elm, Shape sh) => PrimArrayOpsM sh elm (ST s) instance (Unbox elm, Shape sh, Show elm, Show sh) => PrimArrayOps sh elm