module Pandora.Paradigm.Primary.Functor.Proxy where import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-))) import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-))) import Pandora.Pattern.Functor.Pointable (Pointable (point)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Paradigm.Primary.Algebraic.Exponential () data Proxy a = Proxy instance Covariant Proxy (->) (->) where a -> b _ -<$>- :: (a -> b) -> Proxy a -> Proxy b -<$>- Proxy a Proxy = Proxy b forall k (a :: k). Proxy a Proxy instance Contravariant Proxy (->) (->) where a -> b _ ->$<- :: (a -> b) -> Proxy b -> Proxy a ->$<- Proxy b _ = Proxy a forall k (a :: k). Proxy a Proxy instance Pointable Proxy (->) where point :: a -> Proxy a point a _ = Proxy a forall k (a :: k). Proxy a Proxy instance Distributive Proxy (->) (->) where a -> Proxy b _ -<< :: (a -> Proxy b) -> u a -> Proxy (u b) -<< u a _ = Proxy (u b) forall k (a :: k). Proxy a Proxy instance Bindable Proxy (->) where a -> Proxy b _ =<< :: (a -> Proxy b) -> Proxy a -> Proxy b =<< Proxy a _ = Proxy b forall k (a :: k). Proxy a Proxy instance Monad Proxy instance Extendable Proxy (->) where Proxy a -> b _ <<= :: (Proxy a -> b) -> Proxy a -> Proxy b <<= Proxy a _ = Proxy b forall k (a :: k). Proxy a Proxy