module Data.Functor.Constant where import Control.Functor.Covariant (Covariant ((<$>))) import Control.Functor.Covariant.Pointable (Pointable (point)) import Control.Functor.Covariant.Composition.Traversable (Traversable ((->>))) import Control.Functor.Contravariant (Contravariant ((>$<))) newtype Constant a b = Constant a instance Covariant (Constant a) where _ <$> Constant x = Constant x instance Contravariant (Constant a) where _ >$< Constant x = Constant x instance Traversable (Constant a) where Constant x ->> _ = point (Constant x)