module Data.Functor.Contravariant.Syntax where import Data.Functor.Contravariant (<-$>) :: Contravariant f => (a -> b) -> f b -> f a (<-$>) = contramap (<-$$>) :: (Contravariant f0, Contravariant f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b) (<-$$>) = contramap . contramap (<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) => (a -> b) -> f2 (f1 (f0 b)) -> f2 (f1 (f0 a)) (<-$$$>) = contramap . contramap . contramap (<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b))) (<-$$$$>) = contramap . contramap . contramap . contramap (<-$$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3, Contravariant f4) => (a -> b) -> f4 (f3 (f2 (f1 (f0 b)))) -> f4 (f3 (f2 (f1 (f0 a)))) (<-$$$$$>) = contramap . contramap . contramap . contramap . contramap