úÎ!àà                 Safe-InferredIt's just ~> flipped.  type m <~ n = n ~> m The ~> type represents arrows in the  category of MHask. .Left-to-right composition of arrows in MHask. It's just ~>~ flipped.  (~<~) = flip (~>~)  Safe-InferredFunctor is its own dual. Flipping the arrows on fmap's type signature . is just the same type signature in disguise.  (m <~ n) -> (t m <~ t n)  !" !" Safe-Inferred The dual of MHask.Copointed #$%#$% Safe-InferredDual of  MHask.Comonad 6If you define your Monad in terms of bind and return, 6 then you get a free implementation of fmap which can  be used for Functor.      Safe-Inferred  The dual of  MHask.Pointed  &'(    &'( Safe-InferredDual of  MHask.Monad ;If you define your Comonad in terms of extend and extract, 6 then you get a free implementation of fmap which can  be used for Functor.  Safe-InferredThe indexed version of  MHask.Functor.  IxFunctor is its own dual. Flipping the arrows on imap's type signature . is just the same type signature in disguise. " (m <~ n) -> (t i j m <~ t i j n)  Safe-InferredThe indexed version of  MHask.Pointed.  The dual of MHask.Indexed.Copointed.   Safe-InferredIndexed version of  MHask.Monad.  Dual of MHask.Indexed.Comonad :If you define your IxMonad in terms of ibind and ireturn, 6 then you get a free implementation of imap which can  be used for IxFunctor.   Safe-InferredThe indexed version of MHask.Copointed.  The dual of MHask.Indexed.Pointed.   Safe-InferredIndexed version of  MHask.Comonad.  Dual of MHask.Indexed.Monad ?If you define your IxComonad in terms of iextend and iextract, 6 then you get a free implementation of imap which can  be used for IxFunctor.   Safe-Inferred  )  !" # $ % & ' ( ) * + ,-./0123456 MHask-0.3.0.0 MHask.Arrow MHask.Functor MHask.Pointed MHask.MonadMHask.Copointed MHask.ComonadMHask.Indexed.FunctorMHask.Indexed.PointedMHask.Indexed.MonadMHask.Indexed.CopointedMHask.Indexed.ComonadMHask<~~>~>~~<~FunctorfmapPointedreturnMonadjoinbind fmapMonad CopointedextractComonad duplicateextend fmapComonad IxFunctorimap IxPointedireturnIxMonadijoinibind imapMonad IxCopointediextract IxComonad iduplicateiextend imapComonad$fFunctorWriterT$fFunctorReaderT$fFunctorStateT$fPointedWriterT$fPointedReaderT$fPointedStateT$fCopointedWriterT$fCopointedReaderT$fCopointedStateT