repa-eval-4.2.3.1: Low-level parallel operators on bulk random-accessble arrays.

Safe HaskellNone
LanguageHaskell98

Data.Repa.Eval.Elt

Description

Values that can be stored in Repa Arrays.

Synopsis

Documentation

class Elt a where Source #

Element types that can be used with the blockwise filling functions.

This class is mainly used to define the touch method. This is used internally in the imeplementation of Repa to prevent let-binding from being floated inappropriately by the GHC simplifier. Doing a seq sometimes isn't enough, because the GHC simplifier can erase these, and still move around the bindings.

This class supports the generic deriving mechanism, use deriving instance Elt (TYPE)

Methods

touch :: a -> IO () Source #

Place a demand on a value at a particular point in an IO computation.

touch :: (Generic a, GElt (Rep a)) => a -> IO () Source #

Place a demand on a value at a particular point in an IO computation.

zero :: a Source #

Generic zero value, helpful for debugging.

zero :: (Generic a, GElt (Rep a)) => a Source #

Generic zero value, helpful for debugging.

one :: a Source #

Generic one value, helpful for debugging.

one :: (Generic a, GElt (Rep a)) => a Source #

Generic one value, helpful for debugging.

Instances

Elt Bool Source # 

Methods

touch :: Bool -> IO () Source #

zero :: Bool Source #

one :: Bool Source #

Elt Char Source # 

Methods

touch :: Char -> IO () Source #

zero :: Char Source #

one :: Char Source #

Elt Double Source # 
Elt Float Source # 
Elt Int Source # 

Methods

touch :: Int -> IO () Source #

zero :: Int Source #

one :: Int Source #

Elt Int8 Source # 

Methods

touch :: Int8 -> IO () Source #

zero :: Int8 Source #

one :: Int8 Source #

Elt Int16 Source # 
Elt Int32 Source # 
Elt Int64 Source # 
Elt Word Source # 

Methods

touch :: Word -> IO () Source #

zero :: Word Source #

one :: Word Source #

Elt Word8 Source # 
Elt Word16 Source # 
Elt Word32 Source # 
Elt Word64 Source # 
(Elt a, Elt b) => Elt (a, b) Source # 

Methods

touch :: (a, b) -> IO () Source #

zero :: (a, b) Source #

one :: (a, b) Source #

(Elt a, Elt b, Elt c) => Elt (a, b, c) Source # 

Methods

touch :: (a, b, c) -> IO () Source #

zero :: (a, b, c) Source #

one :: (a, b, c) Source #

(Elt a, Elt b, Elt c, Elt d) => Elt (a, b, c, d) Source # 

Methods

touch :: (a, b, c, d) -> IO () Source #

zero :: (a, b, c, d) Source #

one :: (a, b, c, d) Source #

(Elt a, Elt b, Elt c, Elt d, Elt e) => Elt (a, b, c, d, e) Source # 

Methods

touch :: (a, b, c, d, e) -> IO () Source #

zero :: (a, b, c, d, e) Source #

one :: (a, b, c, d, e) Source #

(Elt a, Elt b, Elt c, Elt d, Elt e, Elt f) => Elt (a, b, c, d, e, f) Source # 

Methods

touch :: (a, b, c, d, e, f) -> IO () Source #

zero :: (a, b, c, d, e, f) Source #

one :: (a, b, c, d, e, f) Source #