úÎ CI%      !"#$portable provisionalEdward Kmett <ekmett@gmail.com>?Transform a FunctorApply into an Applicative by adding a unit. Wrap an % to be used as a member of    'A strong lax semi-monoidal endofunctor a .> b = const id  $ a  . b a  . b = const <$ a  . b TODO: move into Data.Functor  A variant of   with the arguments reversed. 3Lift a binary function into a comonad with zipping 4Lift a ternary function into a comonad with zipping &7An IntMap is not Applicative, but it is an instance of   ' A Map is not %, but it is an instance of         portable provisionalEdward Kmett <ekmett@gmail.com> ()*EUsable default for foldMap, but only if you define foldMap1 yourself portable provisionalEdward Kmett <ekmett@gmail.com>portable provisionalEdward Kmett <ekmett@gmail.com>FA strong lax symmetric semi-monoidal comonad. As such an instance of  is required to satisfy:  + extract (a <.> b) = extract a (extract b) 'This class is based on ComonadZip from "#The Essence of Dataflow Programming" Mby Tarmo Uustalu and Varmo Vene, but adapted to fit the programming style of Control.Applicative. %. can be seen as a similar law over and above FunctorApply that:  pure (a b) = pure a <.> pure b 3Lift a binary function into a comonad with zipping 4Lift a ternary function into a comonad with zipping +A sad little orphan ,>Both required because Semigroup is not a superclass of Monoid "-./0123456789 portable provisionalEdward Kmett <ekmett@gmail.com> !  ! ! !!portable provisionalEdward Kmett <ekmett@gmail.com>"#$  !"#$"#$"#$#$:     !"#$%&'()*+,-./012234567867967:67;67<67=67>67?67@67A67B67C67CDfunctor-apply-0.7.4Data.Functor.ApplyData.Semigroup.FoldableData.Semigroup.TraversableControl.Comonad.ApplyData.Functor.AltControl.Applicative.AltbaseGHC.BaseFunctor Data.Functor<$><$fmap MaybeApply runMaybeApplyWrappedApplicativeWrapApplicativeunwrapApplicative FunctorApply<.>.><.$><..>liftF2liftF3 Foldable1fold1foldMap1 traverse1_for1_ sequenceA1_foldMapDefault1 Traversable1 traverse1 sequence1foldMap1Default ComonadApplyliftW2liftW3 FunctorAltApplicativeAltsomemanyControl.Applicative Applicative$fFunctorApplyIntMap$fFunctorApplyMapActgetAct$fArrowLoopCokleisli$fComonadApply(,)comonad-0.6.2.1Control.Comonadwfix=>==<=<<==>>liftWextend duplicateextractComonad runCokleisli Cokleisli