úμÿI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHGADTs, MPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com>>The contravariant Yoneda lemma applied to a covariant functor MPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com>      rank 2 types experimentalEdward Kmett <ekmett@gmail.com> and * witness a higher kinded adjunction. from ( `'Compose'` g) to  g  and  ) witness the natural isomorphism between Lan f h and  Compose h g given f -| g !! and "& witness the natural isomorphism from Lan f (Lan g h) and Lan (f o g) h " !" !" !""non-portable (rank-2 polymorphism) provisionalEdward Kmett <ekmett@gmail.com>#$%&'()*#$%&'()*#$%*()&'#$%$%&'()*"non-portable (rank-2 polymorphism) provisionalEdward Kmett <ekmett@gmail.com>+,-./01GRight associate all binds in a computation that generates a free monad L This can improve the asymptotic efficiency of the result, while preserving  semantics. +,-./01+,-./01+,-,-./01"non-portable (rank-2 polymorphism) provisionalEdward Kmett <ekmett@gmail.com>23456789:;<=>?@ABC23456789:;<=>?@ABC56723489:;<=>?@ABC2343456789:;<=>?@ABCnon-portable (GADTs, MPTCs) experimentalEdward Kmett <ekmett@gmail.com>DEFWThe natural isomorphism between a comonad w and the comonad generated by w (forwards). GHDEFGHDEFGHDEEFGHI        !"#$$%&'()*++,-./*00123456789:;<=>?@AABCDEkan-extensions-2.1!Data.Functor.Yoneda.ContravariantData.Functor.YonedaData.Functor.KanExtensionControl.Monad.Free.ChurchControl.Monad.CodensityControl.Monad.CoControl.Comonad.DensityYoneda liftYoneda lowerYonedalowerM runYonedamaxFminFmaxMminMLanRanrunRantoRanfromRan composeRan decomposeRan adjointToRan ranToAdjointranToComposedAdjointcomposedAdjointToRantoLanfromLan adjointToLan lanToAdjointlanToComposedAdjointcomposedAdjointToLan composeLan decomposeLanFrunFliftFretractfromFtoFimprove Codensity runCodensitylowerCodensitycodensityToAdjunctionadjunctionToCodensityCoTrunCoTCocorunColiftCoT0 lowerCoT0lowerCo0liftCoT1 lowerCoT1lowerCo1posWpeekWpeeksWaskWasksWtraceWDensity liftDensitydensityToAdjunctionadjunctionToDensity