úÎ(P$l4      !"#$%&'()*+,-./0123MPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered 45678    45678 Safe-Infered #An adjunction from Hask^op to Hask   Op (f a) b ~ Hask a (g b)   rightAdjunct unit = id  leftAdjunct counit = id 5Any adjunction from Hask to Hask^op would indirectly 7 permit unsafePerformIO, and therefore does not exist. :Represent a contravariant functor that has a left adjoint 9'This gives rise to the Cont Bool monad :-This adjunction gives rise to the Cont monad 9:    9:MPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered ;<=;<=rank 2 types, MPTCs, fundeps experimentalEdward Kmett <ekmett@gmail.com> Safe-Infered%An adjunction between Hask and Hask. Minimal definition: both  and  or both   and -, subject to the constraints imposed by the : default definitions that the following laws should hold.   unit = leftAdjunct id  counit = rightAdjunct id  leftAdjunct f = fmap f . unit " rightAdjunct f = counit . fmap f .Any implementation is required to ensure that  and   witness an isomorphism from  Nat (f a, b) to   Nat (a, g b)  rightAdjunct unit = id  leftAdjunct counit = id :Every right adjoint is representable by its left adjoint  applied to a unit element +Use this definition and the primitives in = Data.Functor.Representable to meet the requirements of the  superclasses of Representable. "-A right adjoint functor admits an intrinsic  notion of zipping #+Every functor in Haskell permits unzipping %<A left adjoint must be inhabited, or we can derive bottom. &<And a left adjoint must be inhabited by exactly one element '!Every functor in Haskell permits  uncozipping  !"#$%&'>?@ABC !"#$%&'"#%$&' ! !"#$%&'>?@ABCMPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered ()*+,-DEFG()*+,-+-,()*()*+,-DEFGMPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedHiExploiting this instance requires that we have the missing Traversables for Identity, (,)e and IdentityT ./0123HIJK./0123132./0./0123HIJKL      !"#$%&'()*+,-./0123456789:1;/01<adjunctions-2.2Control.Monad.Trans.Conts%Data.Functor.Contravariant.Adjunction)Control.Monad.Trans.Contravariant.AdjointData.Functor.AdjunctionControl.Comonad.Trans.AdjointControl.Monad.Trans.AdjointContsT runContsTContsContcontrunContcontsrunContscallCC Adjunctionunitcounit leftAdjunct rightAdjunctcorepAdjunctioncoindexAdjunctionAdjointT runAdjointTAdjointadjoint runAdjointtabulateAdjunctionindexAdjunctionsplitLunsplitLextractL duplicateLzipRunzipRabsurdL unabsurdLcozipLuncozipL$fMonadTransContsT $fMonadContsT$fApplicativeContsT $fApplyContsT$fFunctorContsT$fAdjunctionPredicatePredicate$fAdjunctionOpOp$fMonadAdjointT$fApplicativeAdjointT$fFunctorAdjointT$fAdjunctionComposeCompose$fAdjunctionWriterTTracedT$fAdjunctionEnvTReaderT$fAdjunctionIdentityTIdentityT$fAdjunctionIdentityIdentity$fAdjunction(,)(->)$fComonadTransAdjointT$fComonadAdjointT$fExtendAdjointT$fMonadTransAdjointT