How to fix that? We want to construct an operator which is able to compose:
f :: a -> F b & g :: b -> F c.
f :: a -> F b
g :: b -> F c
More specifically we want to create an operator ◎ of type
◎ :: (b -> F c) -> (a -> F b) -> (a -> F c)
Note: if F = I, ◎ = (.).
F
(.)