úÎ î ü     portable provisionalEdward Kmett <ekmett@gmail.com>The    s of a given   $definition   extract . fmap f = f . extract   duplicate = extend id 0 fmap (fmap f) . duplicate = duplicate . fmap f   extend f = fmap f . duplicate "A suitable default definition for  for a . # Promotes a function to a comonad. " fmap f = extend (f . extract) % with the arguments swapped. Dual to  for a .  in operator form %Right-to-left Cokleisli composition $Left-to-right Cokleisli composition Comonadic fixed point             comonad-0.7.0Control.Comonad Cokleisli runCokleisliComonadextract duplicateextendliftW=>><<==<==>=wfixbase Control.ArrowArrowGHC.Basefmap>>=MonadcokleisliTyCon