module Control.Functor.Composition (type (:.:), type (:.%), type (%.:), type (%.%)) where import Control.Functor.Contravariant (Contravariant) import Control.Functor.Covariant (Covariant) infixr 0 :.: type (:.:) t u a = (Covariant t, Covariant u) => t (u a) infixr 0 :.% type (:.%) t u a = (Covariant t, Contravariant u) => t (u a) infixr 0 %.: type (%.:) t u a = (Contravariant t, Covariant u) => t (u a) infixr 0 %.% type (%.%) t u a = (Contravariant t, Contravariant u) => t (u a)