repa-array-4.2.2.1: Data/Repa/Array.hs
--
-- | NOTE: This is an ALPHA version of Repa 4. The API is not yet complete with
-- respect to Repa 3. Some important functions are still missing, and the
-- docs may not be up-to-date.
--
-- === How to write fast code
--
-- 1. Add @INLINE@ pragmas to all leaf-functions in your code, expecially ones
-- that compute numeric results. Non-inlined lazy function calls can cost
-- upwards of 50 cycles each, while each numeric operator only costs one
-- (or less). Inlining leaf functions also ensures they are specialised at
-- the appropriate numeric types.
--
-- 2. Add bang patterns to all function arguments, and all fields of your data
-- types. In a high-performance Haskell program, the cost of lazy evaluation
-- can easily dominate the run time if not handled correctly. You don't want
-- to rely on the strictness analyser in numeric code because if it does not
-- return a perfect result then the performance of your program will be
-- awful. This is less of a problem for general Haskell code, and in a different
-- context relying on strictness analysis is fine.
--
-- 3. Compile your program with @ghc -O2 -fllvm -optlo-O3@. The LLVM compiler
-- produces better object code that GHC's internal native code generator.
--
module Data.Repa.Array
( Array
, Elem, Build
-- * Basics
, index
, (!)
, length
, first, last
, head, tail, init
-- * Construction
, empty
, singleton
, generateMaybeS
, generateEitherS
-- * Conversion
, fromList
, fromLists
, fromListss
, toList
, toLists
, toListss
-- * Operators
-- ** Replicating
, replicates
-- ** Mapping
, map
, map2
, mapElems
-- ** Folding
, foldl
, folds
, foldsWith
-- *** Special Folds
, sum, product
, mean, std
, correlate
-- ** Filtering
, filter
, slices
, trims
, trimEnds
, trimStarts
-- ** Zipping
, zip
, unzip
-- ** Sloshing
, reverse
, concat
, concats
, concatWith
, unlines
, intercalate
, ragspose3
-- ** Slicing
, slice
-- ** Inserting
, insert
-- ** Searching
, findIndex
-- ** Merging
, merge
, mergeMaybe
-- ** Compacting
, compact
, compactIn
-- ** Grouping
, groups
, groupsWith
-- ** Splitting
, segment
, segmentOn
, dice
, diceSep
-- ** Products
-- *** Generic
, prod
, unprod
-- *** Pattern synonyms
-- | These patterns patterns work on arrays of arbitrary element type.
--
-- (Haddock 2.16.0 has a bug where the type signatures come out monomorphic)
--
, pattern Prod2
, pattern Prod3
, pattern Prod4
, pattern Prod5
, pattern Prod6
, pattern Prod7
, pattern Prod8
, pattern Prod9
)
where
import Data.Repa.Array.Auto
import Prelude
hiding ( map, length, reverse, filter, concat, unlines, foldl
, sum, product
, last
, head, init, tail
, zip, unzip)