accelerate-utility-0.0: Utility functions for the Accelerate framework

Safe HaskellNone
LanguageHaskell98

Data.Array.Accelerate.Utility.Lift.Exp

Documentation

class (Elt (Tuple pattern), Plain (Unlifted pattern) ~ Tuple pattern) => Unlift pattern where Source

Associated Types

type Unlifted pattern Source

type Tuple pattern Source

Methods

unlift :: pattern -> Exp (Tuple pattern) -> Unlifted pattern Source

Instances

Elt a => Unlift (Atom a) 
(Unlift pa, Unlift pb) => Unlift (pa, pb) 
(Unlift pa, Slice (Tuple pa), (~) * int (Atom Int)) => Unlift ((:.) pa int) 
(Unlift pa, Unlift pb, Unlift pc) => Unlift (pa, pb, pc) 

modify :: (Lift Exp a, Unlift pattern) => pattern -> (Unlifted pattern -> a) -> Exp (Tuple pattern) -> Exp (Plain a) Source

modify2 :: (Lift Exp a, Unlift patternA, Unlift patternB) => patternA -> patternB -> (Unlifted patternA -> Unlifted patternB -> a) -> Exp (Tuple patternA) -> Exp (Tuple patternB) -> Exp (Plain a) Source

modify3 :: (Lift Exp a, Unlift patternA, Unlift patternB, Unlift patternC) => patternA -> patternB -> patternC -> (Unlifted patternA -> Unlifted patternB -> Unlifted patternC -> a) -> Exp (Tuple patternA) -> Exp (Tuple patternB) -> Exp (Tuple patternC) -> Exp (Plain a) Source

modify4 :: (Lift Exp a, Unlift patternA, Unlift patternB, Unlift patternC, Unlift patternD) => patternA -> patternB -> patternC -> patternD -> (Unlifted patternA -> Unlifted patternB -> Unlifted patternC -> Unlifted patternD -> a) -> Exp (Tuple patternA) -> Exp (Tuple patternB) -> Exp (Tuple patternC) -> Exp (Tuple patternD) -> Exp (Plain a) Source

data Atom a Source

Constructors

Atom 

Instances

Elt a => Unlift (Atom a) 
type Unlifted (Atom a) = Exp a 
type Tuple (Atom a) = a 

unliftPair :: (Elt a, Elt b) => Exp (a, b) -> (Exp a, Exp b) Source

unliftTriple :: (Elt a, Elt b, Elt c) => Exp (a, b, c) -> (Exp a, Exp b, Exp c) Source

unliftQuadruple :: (Elt a, Elt b, Elt c, Elt d) => Exp (a, b, c, d) -> (Exp a, Exp b, Exp c, Exp d) Source

asExp :: Exp a -> Exp a Source

mapFst :: (Elt a, Elt b, Elt c) => (Exp a -> Exp b) -> Exp (a, c) -> Exp (b, c) Source

mapSnd :: (Elt a, Elt b, Elt c) => (Exp b -> Exp c) -> Exp (a, b) -> Exp (a, c) Source

fst3 :: (Elt a, Elt b, Elt c) => Exp (a, b, c) -> Exp a Source

snd3 :: (Elt a, Elt b, Elt c) => Exp (a, b, c) -> Exp b Source

thd3 :: (Elt a, Elt b, Elt c) => Exp (a, b, c) -> Exp c Source

indexCons :: Slice ix => Exp ix -> Exp Int -> Exp (ix :. Int) Source