<div dir="ltr"><div dir="ltr"><div dir="ltr">Hello everyone!<div><br></div><div>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:</div><div><br></div><div><div><font face="monospace, monospace">    instance Functor m => Functor (Kleisli m a) where</font></div><div><font face="monospace, monospace">        fmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c</font></div><div><font face="monospace, monospace">        fmap f (Kleisli h) = Kleisli (fmap f . h)</font></div><div><font face="monospace, monospace">        {-# INLINE fmap #-}</font></div><div><font face="monospace, monospace">    </font></div><div><font face="monospace, monospace">        (<$) :: c -> Kleisli m a b -> Kleisli m a c</font></div><div><font face="monospace, monospace">        c <$ Kleisli h = Kleisli (\a -> c <$ h a)</font></div><div><font face="monospace, monospace">        {-# INLINE (<$) #-}</font></div></div><div><br></div><div>Having this instance would be really helpful in improving the `profunctors` package by adding QuantifiedConstraints to it. See more details in the discussion below:</div><div><br></div><div>    <a href="https://github.com/ekmett/profunctors/pull/70#discussion_r267648958">https://github.com/ekmett/profunctors/pull/70#discussion_r267648958</a></div><div><br></div><div>Thanks,</div><div>Dmitrii Kovanikov</div><div><br></div></div></div></div>