#4189: Add (<.>) operator (generalizing (.) to Functor)

wren ng thornton wren at community.haskell.org
Tue Aug 3 14:03:53 EDT 2010


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


More information about the Libraries mailing list