Stability | experimental |
---|---|
Maintainer | conal@tabula.com |
Safe Haskell | None |
Composable parallel scanning from http://conal.net/blog/posts/composable-parallel-scanning/
- class Scan f where
- prefixScan :: Monoid m => f m -> PreScanO f m
- suffixScan :: Monoid m => f m -> SufScanO f m
- type PreScanO f a = (f a, a)
- type SufScanO f a = (a, f a)
- prefixScanEnc :: (EncodeF f, Scan (Enc f), Monoid m) => f m -> PreScanO f m
- suffixScanEnc :: (EncodeF f, Scan (Enc f), Monoid m) => f m -> SufScanO f m
- preScanTweak :: Functor f => (a -> b) -> PreScanO f a -> PreScanO f b
- sufScanTweak :: Functor f => (a -> b) -> SufScanO f a -> SufScanO f b
- prefixSums :: (Functor f, Scan f, Num a) => f a -> PreScanO f a
- suffixSums :: (Functor f, Scan f, Num a) => f a -> SufScanO f a
Documentation
Parallel scans. prefixScan
accumulates moving left-to-right, while
suffixScan
accumulates moving right-to-left.
prefixScan :: Monoid m => f m -> PreScanO f mSource
suffixScan :: Monoid m => f m -> SufScanO f mSource
preScanTweak :: Functor f => (a -> b) -> PreScanO f a -> PreScanO f bSource
sufScanTweak :: Functor f => (a -> b) -> SufScanO f a -> SufScanO f bSource