
Hello everyone! I would like to propose to add a `Functor` instance to the `Kleisli` data type from the `Control.Arrow` module. The instance can look like this: instance Functor m => Functor (Kleisli m a) where fmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c fmap f (Kleisli h) = Kleisli (fmap f . h) {-# INLINE fmap #-} (<$) :: c -> Kleisli m a b -> Kleisli m a c c <$ Kleisli h = Kleisli (\a -> c <$ h a) {-# INLINE (<$) #-} Having this instance would be really helpful in improving the `profunctors` package by adding QuantifiedConstraints to it. See more details in the discussion below: https://github.com/ekmett/profunctors/pull/70#discussion_r267648958 Thanks, Dmitrii Kovanikov