úÎͽ     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>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 4Only requires a Semigroup, but no such class exists 4Only requires a Semigroup, but no such class exists " !"#$%&' (        !" !# !$ !% !& !' !( !) !* !+ !, !- !-.functor-apply-0.6.0Data.Functor.ApplyControl.Comonad.ApplybaseGHC.BaseFunctor Data.Functor<$><$fmap MaybeApply runMaybeApplyWrappedApplicativeunwrapApplicative FunctorApply<.>.><.$><..>liftF2liftF3 ComonadApplyliftW2liftW3Control.Applicative Applicative$fFunctorApplyIntMap$fFunctorApplyMap$fArrowLoopCokleisli$fComonadApply(->)$fComonadApply(,) comonad-0.6.0Control.Comonadwfix=>==<=<<==>>liftWextend duplicateextractComonad runCokleisli Cokleisli