| Safe Haskell | None |
|---|
Data.Array.Knead.Parameterized.Slice
- data T p sh0 sh1
- apply :: (C sh0, C sh1, C a) => T p sh0 sh1 -> Array p sh0 a -> Array p sh1 a
- type Cubic p rank0 rank1 = T p (Shape rank0) (Shape rank1)
- passAny :: Cubic p rank rank
- pass :: (Natural rank0, Natural rank1) => Cubic p rank0 rank1 -> Cubic p (Succ rank0) (Succ rank1)
- pick :: (Natural rank0, Natural rank1) => T p Int -> Cubic p rank0 rank1 -> Cubic p (Succ rank0) rank1
- extrude :: (Natural rank0, Natural rank1) => T p Int -> Cubic p rank0 rank1 -> Cubic p rank0 (Succ rank1)
- ($:.) :: (Process proc0, Process proc1) => proc0 -> (proc0 -> proc1) -> proc1
Documentation
pass :: (Natural rank0, Natural rank1) => Cubic p rank0 rank1 -> Cubic p (Succ rank0) (Succ rank1)Source
pick :: (Natural rank0, Natural rank1) => T p Int -> Cubic p rank0 rank1 -> Cubic p (Succ rank0) rank1Source
extrude :: (Natural rank0, Natural rank1) => T p Int -> Cubic p rank0 rank1 -> Cubic p rank0 (Succ rank1)Source
($:.) :: (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.