
Maciej Marcin Piechotka wrote:
Personally, I think being explicit about the use of fmap here makes code a lot clearer overall. One prime example has already been raised where it makes it clear that (fmap f . fmap g . h) should be written (fmap(f . g) . h) instead. This isn't a case like (<=<) or (<<<) where we are actually generalizing composition in Hask to composition in another category. I'm not a big fan of making a composition operator that crosses between categories; it just doesn't feel like a clean abstraction.
For existing examples of such mixture:
(^<<) :: (Arrow a) => (c -> d) -> a b c -> a b d (<<^) :: (Arrow a) => a c d -> (b -> c) -> a b d (>>^) :: (Arrow a) => a b c -> (c -> d) -> a b d (^>>) :: (Arrow a) => (b -> c) -> a c d -> a b d
Yeah, I don't like any of those either :) -- Live well, ~wren