6,8J      !"#$%&'()*+,-./0123456789:;<=>?@A B C D E F G H I portable provisionalEdward Kmett <ekmett@gmail.com>None JKLMNOP   JKLMNOPportable provisionalEdward Kmett <ekmett@gmail.com>NoneGUsable default for foldMap, but only if you define bifoldMap1 yourself QRSTUVWXYZ[\]QRSTUVWXYZ[\]portable provisionalEdward Kmett <ekmett@gmail.com>NoneMinimal definition either  or  and  Formally, the class  represents a bifunctor  from Hask -> Hask. WIntuitively it is a bifunctor where both the first and second arguments are covariant. You can define a  by either defining  or by defining both   and . If you supply , you should ensure that:   ^ ^ "a ^If you supply  and  , ensure:     ^ "a ^   ^ "a ^ ,If you supply both, you should also ensure:   f g "a  f _  gThese ensure by parametricity:    (f _ g) (h _ i) "a  f h _  g i   (f _ g) "a  f _  g   (f _ g) "a  f _  g *Map over both arguments at the same time.  f g "a  f _  g)Map covariantly over the first argument.  f "a  f ^*Map covariantly over the second argument.  "a  ^ `abcdef`abcdefportable provisionalEdward Kmett <ekmett@gmail.com>None!   a .> b "a g ^ h a <.> b "   a <. b "a g h a <.> b %Lift binary functions &Lift ternary functions  !"#$%&ijklmn  !"#$%& !"#$%&  !"#$%&ijklmnportable provisionalEdward Kmett <ekmett@gmail.com>Noneo right-to-left state transformer p left-to-right state transformer !qrsotupvw'()*+,-./01xyz{|}~ '()*+,-./01 '()*+,-./01qrsotupvw'()*+,-./01xyz{|}~portable provisionalEdward Kmett <ekmett@gmail.com>None 234523452345 2345portable provisionalEdward Kmett <ekmett@gmail.com>None9   a  b "a g ^ h a  b :   a  b "a g h a <.> b <Lift binary functions =Lift ternary functions 6789:;<= #6789:;<= 6789:#;<= 6789:;<=portable provisionalEdward Kmett <ekmett@gmail.com>None>Make a  over the first argument of a . >?@>?@>?@ >?@ portable provisionalEdward Kmett <ekmett@gmail.com>NoneAMake a  over the first argument of a . ABCABCABC ABC portable provisionalEdward Kmett <ekmett@gmail.com>NoneDMake a  over the second argument of a . DEFDEFDEF DEF portable provisionalEdward Kmett <ekmett@gmail.com>NoneGMake a  over the second argument of a . GHIGHIGHI GHI   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJK L L M N N O P Q RSTUVWXYZZ[\]^_`abcdefghfgijklmnopfgqfrstuvwxyz{||}z~{ffffg bifunctors-3.2.0.1Data.BifoldableData.Semigroup.BifoldableData.BifunctorData.Bifunctor.ApplyData.BitraversableData.Semigroup.BitraversableData.BiapplicativeData.Bifunctor.ClownData.Bifunctor.FlipData.Bifunctor.JokerData.Bifunctor.Wrapped Bifoldablebifold bifoldMapbifoldrbifoldlbifoldr'bifoldrMbifoldl'bifoldlM bitraverse_bifor_bimapM_biforM_ bisequenceA_ bisequence_biListbiconcat biconcatMapbianybiall Bifoldable1bifold1 bifoldMap1 bitraverse1_bifor1_ bisequenceA1_bifoldMapDefault1 BifunctorbimapfirstsecondBiapply<<.>>.>><<.<<$>><<..>>bilift2bilift3 Bitraversable bitraverse bisequenceAbimapM bisequencebiforbiforM bimapAccumL bimapAccumR bimapDefaultbifoldMapDefaultBitraversable1 bitraverse1 bisequence1bifoldMap1Default Biapplicativebipure<<*>>*>><<*<<**>>biliftA2biliftA3ClownrunClownFliprunFlipJokerrunJokerWrappedBifunctor WrapBifunctorunwrapBifunctor$fBifoldableEither$fBifoldableTagged$fBifoldable(,,,,)$fBifoldable(,,,)$fBifoldable(,,)$fBifoldableConst$fBifoldable(,)ActgetActignore $fFunctorAct$fSemigroupAct$fBifoldable1Tagged$fBifoldable1Const$fBifoldable1(,,,,)$fBifoldable1(,,,)$fBifoldable1(,,)$fBifoldable1(,)$fBifoldable1EitherbaseGHC.Baseid.$fBifunctorTagged$fBifunctorConst$fBifunctorEither$fBifunctor(,,,,)$fBifunctor(,,,)$fBifunctor(,,)$fBifunctor(,)const Data.Functor<$>$fBiapplyTagged$fBiapplyConst$fBiapply(,,,,)$fBiapply(,,,) $fBiapply(,,) $fBiapply(,)StateRStateLIdgetId runStateR runStateL$fApplicativeId $fFunctorId$fApplicativeStateR$fFunctorStateR$fApplicativeStateL$fFunctorStateL$fBitraversableTagged$fBitraversableConst$fBitraversableEither$fBitraversable(,,,,)$fBitraversable(,,,)$fBitraversable(,,)$fBitraversable(,)$fBitraversable1Tagged$fBitraversable1Const$fBitraversable1(,,,,)$fBitraversable1(,,,)$fBitraversable1(,,)$fBitraversable1(,)$fBitraversable1EitherControl.Applicative*><*><*$fBiapplicativeConst$fBiapplicativeTagged$fBiapplicative(,,,,)$fBiapplicative(,,,)$fBiapplicative(,,)$fBiapplicative(,)Functor$fBitraversable1Clown$fBifoldable1Clown$fTraversableClown$fBitraversableClown$fFoldableClown$fBifoldableClown$fBiapplyClown$fBiapplicativeClown$fFunctorClown$fBifunctorClown$fBitraversable1Flip$fBifoldable1Flip$fTraversableFlip$fBitraversableFlip$fFoldableFlip$fBifoldableFlip $fBiapplyFlip$fBiapplicativeFlip $fFunctorFlip$fBifunctorFlip$fTraversable1Joker$fBitraversable1Joker$fFoldable1Joker$fBifoldable1Joker$fTraversableJoker$fBitraversableJoker$fFoldableJoker$fBifoldableJoker$fBiapplyJoker$fBiapplicativeJoker$fFunctorJoker$fBifunctorJoker $fBitraversable1WrappedBifunctor$fBifoldable1WrappedBifunctor$fBitraversableWrappedBifunctor$fTraversableWrappedBifunctor$fBifoldableWrappedBifunctor$fFoldableWrappedBifunctor$fBiapplicativeWrappedBifunctor$fBiapplyWrappedBifunctor$fFunctorWrappedBifunctor$fBifunctorWrappedBifunctor