[Haskell-cafe] Work on Collections Processing Arrows?
dmbarbour at gmail.com
Mon May 9 21:02:10 CEST 2011
Has anyone developed a typeclass model for (Control.Monad.mapM) and related
functions for arrows?
I've a preliminary model, using Adam Megacz's Generalized Arrows, of the
class (GArrowDrop a (**) u) => GArrowMap_ a (**) u c where
mapA_ :: a d u -> a (c d) u
class (GArrow a (**) u c) => GArrowMap a (**) u c where
mapA :: a d r -> a (c d) (c r)
class (GArrowMap a (**) u c) => GArrowJoin a (**) u c where
join :: a d (c r) -> a (c d) (c r)
class (GArrow a (**) u) => GArrowUnion a (**) u c where
union :: a ((c r) ** (c r)) (c r)
class (GArrowMap a (**) u c, GArrow a (++) v) => GArrowPartition a (**) u
(++) v c where
partition :: a d (q ++ r) -> a (c d) ((c q) ** (c r))
Motivations: regular arrows (including GArrows) expose simple products for
behavior, but those have a static 'width' and don't seem suitable for
processing large values. ArrowApply would give me a dynamic amount of
processing, but seems excessively expressive. In my own case, 'c' might be
representing an asynchronous or distributed, reactive collection, so the
ability to restrict expressiveness is important for performance.
I'm wondering if you know of any other work along the same lines.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe