úÎ! É Å     Safe(assoc"Semigroup-y" s.  .  =   .  =   .  ( f g) h =  f ( g h) .  This library doesn't provide MonoidalB class, with left and right unitors. Are they useful in practice?SafeHV ±assoc Symmetric s.  .  =  If p is a + the following property is assumed to hold:  .  f g =  g f .   isn't a subclass of , as for example6newtype Bipredicate a b = Bipredicate (a -> b -> Bool) is not a  but has  instanceKinstance Swap Bipredicate where swap (Bipredicate p) = Bipredicate (flip p)     assoc-1-AomG9p0ZNFCL0f5CzbnQaSData.Bifunctor.AssocData.Bifunctor.SwapAssocassocunassoc $fAssocFlip $fAssocEither $fAssoc(,)Swapswap $fSwapBiff $fSwapTannen $fSwapSum $fSwapProduct $fSwapFlip $fSwapEither $fSwap(,)baseData.Bifunctor BifunctorGHC.Baseidbimap