Safe Haskell | None |
---|
- newtype Exp a = Exp {
- unExp :: forall r. CodeGenFunction r (T a)
- class Value val where
- liftM :: (forall r. T a -> CodeGenFunction r (T b)) -> Exp a -> Exp b
- liftM2 :: (forall r. T a -> T b -> CodeGenFunction r (T c)) -> Exp a -> Exp b -> Exp c
- liftM3 :: (forall r. T a -> T b -> T c -> CodeGenFunction r (T d)) -> Exp a -> Exp b -> Exp c -> Exp d
- unliftM1 :: (Exp a -> Exp b) -> T a -> CodeGenFunction r (T b)
- unliftM2 :: (Exp a -> Exp b -> Exp c) -> T a -> T b -> CodeGenFunction r (T c)
- unliftM3 :: (Exp a -> Exp b -> Exp c -> Exp d) -> T a -> T b -> T c -> CodeGenFunction r (T d)
- min :: Real a => Exp a -> Exp a -> Exp a
- max :: Real a => Exp a -> Exp a -> Exp a
- zip :: Value val => val a -> val b -> val (a, b)
- zip3 :: Value val => val a -> val b -> val c -> val (a, b, c)
- zip4 :: Value val => val a -> val b -> val c -> val d -> val (a, b, c, d)
- unzip :: Value val => val (a, b) -> (val a, val b)
- unzip3 :: Value val => val (a, b, c) -> (val a, val b, val c)
- unzip4 :: Value val => val (a, b, c, d) -> (val a, val b, val c, val d)
- fst :: Value val => val (a, b) -> val a
- snd :: Value val => val (a, b) -> val b
- mapFst :: (Exp a -> Exp b) -> Exp (a, c) -> Exp (b, c)
- mapSnd :: (Exp b -> Exp c) -> Exp (a, b) -> Exp (a, c)
- swap :: Value val => val (a, b) -> val (b, a)
- modifyMultiValue :: (Value val, Compose a, Decompose pattern, PatternTuple pattern ~ tuple) => pattern -> (Decomposed T pattern -> a) -> val tuple -> val (Composed a)
- modifyMultiValue2 :: (Value val, Compose a, Decompose patternA, Decompose patternB, PatternTuple patternA ~ tupleA, PatternTuple patternB ~ tupleB) => patternA -> patternB -> (Decomposed T patternA -> Decomposed T patternB -> a) -> val tupleA -> val tupleB -> val (Composed a)
- modifyMultiValueM :: (Compose a, Decompose pattern, PatternTuple pattern ~ tuple) => pattern -> (forall r. Decomposed T pattern -> CodeGenFunction r a) -> Exp tuple -> Exp (Composed a)
- modifyMultiValueM2 :: (Compose a, Decompose patternA, Decompose patternB, PatternTuple patternA ~ tupleA, PatternTuple patternB ~ tupleB) => patternA -> patternB -> (forall r. Decomposed T patternA -> Decomposed T patternB -> CodeGenFunction r a) -> Exp tupleA -> Exp tupleB -> Exp (Composed a)
- class Compose multituple where
- class Composed (Decomposed Exp pattern) ~ PatternTuple pattern => Decompose pattern where
- decompose :: pattern -> Exp (PatternTuple pattern) -> Decomposed Exp pattern
- modify :: (Compose a, Decompose pattern) => pattern -> (Decomposed Exp pattern -> a) -> Exp (PatternTuple pattern) -> Exp (Composed a)
- modify2 :: (Compose a, Decompose patternA, Decompose patternB) => patternA -> patternB -> (Decomposed Exp patternA -> Decomposed Exp patternB -> a) -> Exp (PatternTuple patternA) -> Exp (PatternTuple patternB) -> Exp (Composed a)
- unit :: Exp ()
- zero :: C a => Exp a
- add :: Additive a => Exp a -> Exp a -> Exp a
- sub :: Additive a => Exp a -> Exp a -> Exp a
- mul :: PseudoRing a => Exp a -> Exp a -> Exp a
- idiv :: Integral a => Exp a -> Exp a -> Exp a
- fromInteger' :: IntegerConstant a => Integer -> Exp a
Documentation
Exp | |
|
Value Exp | |
(Field a, Real a, RationalConstant a) => Fractional (Exp a) | |
(PseudoRing a, Real a, IntegerConstant a) => Num (Exp a) | |
Compose (Exp a) |
liftM3 :: (forall r. T a -> T b -> T c -> CodeGenFunction r (T d)) -> Exp a -> Exp b -> Exp c -> Exp dSource
unliftM3 :: (Exp a -> Exp b -> Exp c -> Exp d) -> T a -> T b -> T c -> CodeGenFunction r (T d)Source
modifyMultiValue :: (Value val, Compose a, Decompose pattern, PatternTuple pattern ~ tuple) => pattern -> (Decomposed T pattern -> a) -> val tuple -> val (Composed a)Source
modifyMultiValue2 :: (Value val, Compose a, Decompose patternA, Decompose patternB, PatternTuple patternA ~ tupleA, PatternTuple patternB ~ tupleB) => patternA -> patternB -> (Decomposed T patternA -> Decomposed T patternB -> a) -> val tupleA -> val tupleB -> val (Composed a)Source
modifyMultiValueM :: (Compose a, Decompose pattern, PatternTuple pattern ~ tuple) => pattern -> (forall r. Decomposed T pattern -> CodeGenFunction r a) -> Exp tuple -> Exp (Composed a)Source
modifyMultiValueM2 :: (Compose a, Decompose patternA, Decompose patternB, PatternTuple patternA ~ tupleA, PatternTuple patternB ~ tupleB) => patternA -> patternB -> (forall r. Decomposed T patternA -> Decomposed T patternB -> CodeGenFunction r a) -> Exp tupleA -> Exp tupleB -> Exp (Composed a)Source
class Composed (Decomposed Exp pattern) ~ PatternTuple pattern => Decompose pattern whereSource
decompose :: pattern -> Exp (PatternTuple pattern) -> Decomposed Exp patternSource
Analogous to decompose
.
modify :: (Compose a, Decompose pattern) => pattern -> (Decomposed Exp pattern -> a) -> Exp (PatternTuple pattern) -> Exp (Composed a)Source
Analogus to modifyMultiValue
.
modify2 :: (Compose a, Decompose patternA, Decompose patternB) => patternA -> patternB -> (Decomposed Exp patternA -> Decomposed Exp patternB -> a) -> Exp (PatternTuple patternA) -> Exp (PatternTuple patternB) -> Exp (Composed a)Source
fromInteger' :: IntegerConstant a => Integer -> Exp aSource