
On Wed, Jan 15, 2014 at 12:30 AM, Christian Marie
On Tue, Jan 14, 2014 at 04:57:14PM +1000, Tony Morris wrote:
Why not generalise to any functor? let flip f a = fmap ($a) f
I didn't think of that, I suppose.
Now that I do, it seems to be a tradeoff between (arguably) less immediately obvious type signatures and something.
I can't actually think of what that something is yet. Can you think of a real world use for a functor flip where normal flip wouldn't do?
I think it's mostly a skeleton to use for generalizing flip. Right now, you have \f a -> fmap ($a) f :: Functor f => f (a -> b) -> a -> f b so if you take (f ~ (->) c), you have \f a -> fmap ($a) f :: (c -> a -> b) -> (a -> c -> b) For flips of higher arities, you would choose a different `f`, like (f ~ (->) d . (->) c): \f a -> fmap ($a) f :: (c -> d -> a -> b) -> (a -> c -> d -> b)