([I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHGADTs, MPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered>The contravariant Yoneda lemma applied to a covariant functor 'IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij&IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijMPTCs, fundeps provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered, klmnopqrstuvwxyz{|}~   * klmnopqrstuvwxyz{|}~ rank 2 types experimentalEdward Kmett <ekmett@gmail.com> Safe-Infered 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> Safe-Infered#$%&'()*#$%&'()*#$%*()&'#$%&'()*"non-portable (rank-2 polymorphism) provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered1GRight 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+,-./01"non-portable (rank-2 polymorphism) provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered23456789:;<=>?@ABC23456789:;<=>?@ABC56723489:;<=>?@ABC23456789:;<=>?@ABCnon-portable (GADTs, MPTCs) experimentalEdward Kmett <ekmett@gmail.com> Safe-InferedFWThe natural isomorphism between a comonad w and the comonad generated by w (forwards). DEFGHDEFGHDEFGH DEFGH        !"#$$%&'()*++,-./*00123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefSTUg[YZ\]`^_FGHIEVXWJKMLNOQPRabcdefhijklmnopqrstuvwxyz{|}~kan-extensions-2.7!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$fAdjunctionYonedaYoneda $fOrdYoneda $fEqYoneda $fReadYoneda $fShowYoneda$fDistributiveYoneda$fTraversableWithKey1Yoneda$fTraversableWithKeyYoneda$fTraversable1Yoneda$fTraversableYoneda$fFoldableWithKey1Yoneda$fFoldable1Yoneda$fFoldableWithKeyYoneda$fFoldableYoneda$fComonadTransYoneda$fComonadYoneda$fExtendYoneda$fRepresentableYoneda$fIndexableYoneda$fLookupYoneda$fMonadPlusYoneda$fMonadFixYoneda$fMonadTransYoneda $fMonadYoneda $fBindYoneda $fPlusYoneda $fAltYoneda$fAlternativeYoneda$fZipWithKeyYoneda $fZipYoneda$fApplicativeYoneda $fApplyYoneda $fKeyedYoneda$fFunctorYoneda$fMonadFreefYoneda$fApplicativeLan $fApplyLan $fFunctorLan $fFunctorRan $fMonadContF$fMonadWriterwF$fMonadReadereF$fMonadStatesF $fMonadFreefF $fMonadTransF $fMonadPlusF$fMonadF$fAlternativeF$fApplicativeF $fFunctorF $fMonadSpecF$fMonadStaterCodensity$fMonadFreefCodensity$fMonadPlusCodensity$fAlternativeCodensity$fMonadTransCodensity$fMonadIOCodensity$fMonadCodensity$fApplicativeCodensity$fApplyCodensity$fFunctorCodensity$fMonadSpecCodensity$fMonadErroreCoT$fMonadWritereCoT$fMonadStatesCoT$fMonadReadereCoT $fMonadIOCoT$fMonadTransCoT $fMonadCoT$fApplicativeCoT $fBindCoT $fApplyCoT $fFunctorCoT$fMonadSpecCoT$fApplicativeDensity$fApplyDensity$fComonadTransDensity$fComonadDensity$fExtendDensity$fFunctorDensity