úÎ#6      !"#$%&'()*+,-./012345portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered 67   67portable provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedGUsable default for foldMap, but only if you define bifoldMap1 yourself 89:; 89:;portable provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedMinimal definition either  or  and  <=>?@A<=>?@Aportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered!a .> b = const id  $ a  . b "a  . b = const <$ a  . b %Lift binary functions &Lift ternary functions  !"#$%&B  !"#$%& !"#$%& !"#$%&Bportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered'()*+,-./01CDEFGHIJ '()*+,-./01 '()*+,-./01'()*+,-./01CDEFGHIJportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered2345KL234523452345KLM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTbifunctors-3.0Data.BifoldableData.Semigroup.BifoldableData.BifunctorData.Bifunctor.ApplyData.BitraversableData.Semigroup.Bitraversable 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$fBifoldableEither$fBifoldable(,) $fFunctorAct$fSemigroupAct$fBifoldable1(,)$fBifoldable1Either$fBifunctorConst$fBifunctorEither$fBifunctor(,,,,)$fBifunctor(,,,)$fBifunctor(,,)$fBifunctor(,) $fBiapply(,)$fApplicativeId $fFunctorId$fApplicativeStateR$fFunctorStateR$fApplicativeStateL$fFunctorStateL$fBitraversableEither$fBitraversable(,)$fBitraversable1(,)$fBitraversable1Either