repa-array-4.1.0.1: Data/Repa/Array/Material.hs
-- | Material arrays are represented as concrete data in memory.
--
-- For performance reasons, random access indexing into these layouts
-- is not bounds checked. However, all bulk operators like @map@ and @concat@
-- are guaranteed to be safe.
--
-- * `A` -- Type directed automatic layout.
--
-- * `F` -- Foreign memory buffers.
--
-- * `N` -- Nested arrays.
--
-- * `B` -- Boxed vectors, via "Data.Vector.Boxed"
--
-- * `U` -- Adaptive unboxed vectors, via "Data.Vector.Unboxed"
--
module Data.Repa.Array.Material
( Material
, Name (..)
, Array (..)
-- * Auto arrays
, A (..)
-- * Foreign arrays
, F (..)
, fromForeignPtr, toForeignPtr
, fromByteString, toByteString
, fromStorableVector, toStorableVector
-- * Nested arrays
, N (..)
, fromLists
, fromListss
-- * Boxed arrays
, B (..)
, fromBoxed, toBoxed
-- * Unboxed arrays
, U (..)
, Unbox
, fromUnboxed, toUnboxed
-- * Material operators
-- | These operators work on particular material representations,
-- rather than being generic like the ones in "Data.Repa.Array.Generic"
-- ** Mapping
, mapElems
-- ** Filtering
, decimate
-- ** Slicing
, slices
-- ** Partitioning
, partition
, partitionBy
, partitionByIx
-- ** Concatenation
, concats
-- ** Splitting
, segment
, segmentOn
, dice
, diceSep
-- ** Trimming
, trims
, trimEnds
, trimStarts
-- ** Transpose
, ragspose3)
where
import Data.Repa.Array.Internals.Operator.Partition
import Data.Repa.Array.Material.Auto
import Data.Repa.Array.Material.Boxed
import Data.Repa.Array.Material.Unboxed
import Data.Repa.Array.Material.Foreign
import Data.Repa.Array.Material.Nested
import Data.Repa.Array.Meta.Window
import Data.Repa.Array.Internals.Bulk
import Data.Repa.Array.Internals.Target
-- | Classes supported by all material representations.
--
-- We can index them in a random-access manner,
-- window them in constant time,
-- and use them as targets for a computation.
--
-- In particular, delayed arrays are not material as we cannot use them
-- as targets for a computation.
--
type Material l a
= (Bulk l a, Windowable l a, Target l a)