module Data.Functor.Constant where import Control.Functor.Pointable (Pointable (point)) import Control.Functor.Covariant (Covariant ((<$>))) import Control.Functor.Contravariant (Contravariant ((>$<))) import Control.Functor.Traversable (Traversable ((->>))) 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)