| Safe Haskell | None |
|---|
Data.Array.Knead.Simple.Fold
Description
Reduce selected dimensions.
Alternatively you may reorder dimensions with backpermute
and fold once along multiple dimensions.
- data T sh0 sh1 a
- type Linear sh0 sh1 = T (Shape sh0) (Shape sh1)
- apply :: (C array, C sh0, C sh1, C a) => T sh0 sh1 a -> array sh0 a -> array sh1 a
- passAny :: Linear sh sh a
- pass :: Linear sh0 sh1 a -> Linear (sh0 :. i) (sh1 :. i) a
- fold :: C a => (Exp a -> Exp a -> Exp a) -> Linear sh0 sh1 a -> Linear (sh0 :. Int) sh1 a
- ($:.) :: (Process proc0, Process proc1) => proc0 -> (proc0 -> proc1) -> proc1
Documentation
($:.) :: (Process proc0, Process proc1) => proc0 -> (proc0 -> proc1) -> proc1Source
Use this for combining several dimension manipulators. E.g.
apply (passAny $:. pick 3 $:. pass $:. replicate 10) array
The constraint (Process proc0, Process proc1) is a bit weak.
We like to enforce that the type constructor like Slice.T
is the same in proc0 and proc1, and only the parameters differ.
Currently this coherence is achieved,
because we only provide functions of type proc0 -> proc1 with this condition.