úÎ0+      !"#$%&'()* Safe-Infered +,+, Safe-Infered -.   -.non-portable (flexible MPTCs) experimentalEdward Kmett <ekmett@gmail.com> Safe-Infered /01234    /01234 Safe-Infered <Used to map a more traditional bifunctor into a semifunctor RSemifunctors map objects to objects, and arrows to arrows preserving connectivity S as normal functors, but do not purport to preserve identity arrows. We apply them $ to semigroupoids, because those don''t even claim to offer identity arrows!  56789:;<=>#?@ABCDEFGHIJK   56789:;<=> MPTCs, GADTs experimentalEdward Kmett <ekmett@gmail.com> Safe-Infered !"#$LMNOPQRSTU !"#$ !"#$ !"#$LMNOPQRSTU MPTCs, GADTs experimentalEdward Kmett <ekmett@gmail.com> Safe-Infered%&'()*VWXYZ[\]^_%&'()*&'()%*%&'()*VWXYZ[\]^_`       !"#$%&'()*+,-./0123456789:;<=>?@ABCDECDFCDGCDHCDIJKLJKMJKNJKOJKPJKQJKRJKRSTUVWXYZ[\]^_`abcdefgsemigroupoid-extras-3.0Data.Semigroupoid.CoproductData.Semigroupoid.ProductData.Semigroupoid.ObData.SemifunctorData.Semifunctor.AssociativeData.Semifunctor.Braided CoproductRLdistributeDualCoproductfactorDualCoproductProductPairdistributeDualProductfactorDualProductObsemiidBiWrappedTraversable1WrapTraversable1unwrapTraversable1WrappedFunctor WrapFunctor unwrapFunctor Semifunctorsemimap# semibimap semifirst semisecondfirstsecondDisassociative disassociate Associative associatekleisliAssociatecokleisliAssociatekleisliDisassociatecokleisliDisassociate SymmetricBraidedbraid kleisliBraidcokleisliBraidswap$fGroupoidCoproduct$fSemigroupoidCoproduct$fGroupoidProduct$fSemigroupoidProduct $fOb(->)a$fObCokleislia $fObKleislia$fObCoproductR$fObCoproductL$fObProduct(,)$fSemifunctorBiProductCokleisli$fSemifunctorBiProductKleisli$fSemifunctorBiProductKleisli0$fSemifunctorBiProduct(->)$fSemifunctorBiProduct(->)0$fSemifunctorfDualDual.$fSemifunctorWrappedTraversable1KleisliKleisli-$fSemifunctorWrappedFunctorCokleisliCokleisli)$fSemifunctorWrappedFunctorKleisliKleisli#$fSemifunctorWrappedFunctor(->)(->)baseControl.Category>>><<<.idCategorysemigroupoids-3.0Data.Semigroupoido SemigroupoidunwrapCategory WrapCategoryWrappedCategorygetSemiSemi$fDisassociativeCokleisliBi$fDisassociativeKleisliBi$fDisassociativeKleisliBi0$fDisassociative(->)Bi$fDisassociative(->)Bi0$fAssociativeCokleisliBi$fAssociativeKleisliBi$fAssociativeKleisliBi0$fAssociative(->)Bi$fAssociative(->)Bi0$fSymmetricCokleisliBi$fSymmetricKleisliBi$fSymmetricKleisliBi0$fSymmetric(->)Bi$fSymmetric(->)Bi0$fBraidedCokleisliBi$fBraidedKleisliBi$fBraidedKleisliBi0$fBraided(->)Bi$fBraided(->)Bi0