úÎ$j î,      !"#$%&'()*+portable provisionalEdward Kmett <ekmett@gmail.com>8Transform a Apply 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> /7An IntMap is not Applicative, but it is an instance of   0 A Map is not ,, but it is an instance of    portable provisionalEdward Kmett <ekmett@gmail.com> 123EUsable default for foldMap, but only if you define foldMap1 yourself portable provisionalEdward Kmett <ekmett@gmail.com> !"# !"# !"# !"!"#portable provisionalEdward Kmett <ekmett@gmail.com>$GA 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 4A sad little orphan 5>Both required because Semigroup is not a superclass of Monoid #6789:;<=>?@ABC $%&$%&$%&portable provisionalEdward Kmett <ekmett@gmail.com>'( '('('((portable provisionalEdward Kmett <ekmett@gmail.com>)*+ '()*+)*+)*+*+D      !"#$%&'()*+,-./0123456789:;<<=>?@AB@AC@AD@AE@AF@AG@AG@HI@HJ@HK@HL@HM@HN@HOPfunctor-apply-0.9.0Data.Functor.ApplyData.Functor.BindData.Semigroup.FoldableData.Semigroup.TraversableControl.Comonad.ApplyData.Functor.AltControl.Applicative.AltbaseGHC.BaseFunctor Data.Functor<$><$fmap MaybeApply runMaybeApplyWrappedApplicativeWrapApplicativeunwrapApplicativeApply<.>.><.$><..>liftF2liftF3Bind>>-join-<<->--<- apDefault Foldable1fold1foldMap1 traverse1_for1_ sequenceA1_foldMapDefault1 Traversable1 traverse1 sequence1foldMap1Default ComonadApplyliftW2liftW3AltApplicativeAltsomemanyControl.Applicative Applicative $fApplyIntMap $fApplyMap $fBindIntMap $fBindMapActgetAct$fArrowLoopCokleisli$fComonadApply(,)comonad-0.9.0.1Control.ComonadwfixliftWextractComonad runCokleisli CokleisliData.Functor.Extend=>==<=<<==>>extend duplicateExtend