Considering this would be in Data.Function along (.) and ($), I do not think generalizing it is the goal.
The aim should be to keep it for functions only... or at least, that's how I've seen (.:) used so far.

I'm all ears though. This is already getting interesting.

On Wed, Aug 17, 2016 at 7:53 PM, MarLinn via Haskell-Cafe <haskell-cafe@haskell.org> wrote:

Some of you might be familiar with (.:) = (.) . (.).

It has type :: (c -> d) -> (a -> b -> c) -> a -> b -> d

First of all, I always called it "dot". Don't know where I picked that one up, though. (.:) looks like it could conflict with some lens or something. Would need checking.

Also, which version? This simple one? Or the Category one?
    (.).(.) :: (Category cat) => cat c d -> (a -> cat b c) -> a -> cat b d

I know little about Category Theory, but throwing together some random words I collected over time that looks like... a "contravariant bind in the monad of endocategories", maybe? I just invented that and it's almost certainly meaningless gibberish, but knowing our community it might well be that there's a lib for that.

Also, why is
    h = f .: g == (f .) . g 

not good enough?

So many questions, so much bikeshedding to do, so little time...


_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.