Tom, On 19/02/2012, at 3:21 AM, Tom Schouten wrote:
> Does AFunctor below have a standard name? It's a generalization of > the Functor class in terms of Arrow instead of (->): > > fmap :: Functor f => (i -> o) -> f i -> f o > afmap :: Arrow a, AFunctor f => a i o -> a (f i) (f o) > > It pops up in less general form (AFunctor = []) in iterated functions > (difference equations / state space models), where the arrow is the > update function parameterized by state type: > > data Iter s i o = Iter ((s,i) -> (s,o)) > instance Arrow (Iter s) I think you can work with Arrow transformers instead. See: http://hackage.haskell.org/packages/archive/arrows/latest/doc/html/Control-Arrow-Transformer-Stream.html#t:StreamArrow It may be that you can generalise to arbitrary functors, but satisfying the Arrow laws may require some care. cheers peter -- http://peteg.org/ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe