[@Juan](https://forum.azimuthproject.org/profile/2083/Juan%20Manuel%20Gimeno) -

> the _boilerplate_ code in
[Kleisli puzzle](https://forum.azimuthproject.org/discussion/comment/17174/#Comment_17174) finishes abrupty with
`import Control.Monad ((`, so I think there are some lines missing.

> I've also needed to change`Applicative m` to `Monad m` because it is needed for `Keisli m` to be a 'Category'.

> Would you mind revising it?

Okay, I fixed it. It should read:


import Control.Category
import Control.Monad ((<=<)) -- Hint!
import Prelude hiding ((.))


You figured it out without the hint of course... next time I promise to make a PR.

> I've also needed to change`Applicative m` to `Monad m` because it is needed for `Keisli m` to be a 'Category'.

For the `CatFunctor` instance for `LeftK`, all it needs it that `m` be an applicative, since it just calls `pure` and doesn't use bind in any way. But I see now that's confusing.

> The code I have is:
>
>

instance Monad m => CatAdjunction (->) (Kleisli m) LeftK (RightK m) where
catLeftAdjunct f = RightK . f . LeftK
catRightAdjunct f = unRightK . f . unLeftK


> And the error I get has to do with functional dependencies:
>
>

• Illegal instance declaration for
‘CatAdjunction (->) (Kleisli m) LeftK (RightK m)’
The liberal coverage condition fails in class ‘CatAdjunction’
for functional dependency: ‘f -> g’
Reason: lhs type ‘LeftK’ does not determine rhs type ‘RightK m’
Un-determined variable: m
• In the instance declaration for
‘CatAdjunction (->) (Kleisli m) LeftK (RightK m)’


Okay, it's my bad again. There shouldn't be any functional dependencies in `CatAdjunction` (we are going to have to give types for everything like it's Java sadly).


class ( CatFunctor x f y
, CatFunctor y g x
) => CatAdjunction x y f g where
catLeftAdjunct :: (f a `y` b) -> (a `x` g b)
catRightAdjunct :: (a `x` g b) -> (f a `y` b)


--------------------------------------------

**You are very close**. You just need to fix the definition you gave for `catRightAdjunct`.