/m]      !"#$%&'()*+,-./01234 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ `abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred(C) 2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe Iduplicated = extended id fmap (fmap f) . duplicated = duplicated . fmap f !extended f = fmap f . duplicated(C) 2011 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe A  sans .Minimal definition: Either   or  NIf defining both, then the following laws (the default definitions) must hold: )join = (>>- id) m >>- f = join (fmap f m)Laws: 2induced definition of <.>: f <.> x = f >>- (<$> x)0Finally, there are two associativity conditions: associativity of (>>-): (m >>- f) >>- g == m >>- (\x -> f x >>- g) associativity of join: join . join = join . fmap join>These can both be seen as special cases of the constraint that 9associativity of (->-): (f ->- g) ->- h = f ->- (g ->- h) 7Transform a Apply into an Applicative by adding a unit.Wrap an  to be used as a member of BA strong lax semi-monoidal endofunctor. This is equivalent to an  without .Laws: @associative composition: (.) <$> u <.> v <.> w = u <.> (v <.> w) a .> b = const id <$> a <.> b a <. b = const <$> a <.> b A variant of  with the arguments reversed.2Lift a binary function into a comonad with zipping3Lift a ternary function into a comonad with zippingAn  is not a , but it is an instance of A  is not a , but it is an instance of An IntMap is not , but it is an instance of  A Map is not , but it is an instance of ^    U   (C) 2011 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Safe-Inferred1A subset of monad transformers can transform any  as well.  (C) 2007-2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe% sans  Ahttp://en.wikipedia.org/wiki/Band_(mathematics)#Rectangular_bands !"#$%& !"#$%&%&"#$ !  !"#$%&(C) 2007-2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Safe-Inferred'()'()'()'() Trustworthy*semigroupoid with inverses. This technically should be a category with inverses, except we need to use Ob to define the valid objects for the category*+*+*+*+ Trustworthy,-./,-./,-./,-./ Safe-Inferred!"0123012301230123  Safe-Inferred!"< 456789:456789:874659:465789: (C) 2011-2012 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimentalnon-portable (flexible MPTCs) Safe-Inferred2346;<=>?@AB;<;<BA@?>=;<=>?@AB(C) 2011 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe  (C) 2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Safe-InferredF Insert an m- between each pair of 't m'. Equivalent to G with  as the second argument.4intercalate1 ", " $ "hello" :| ["how", "are", "you"]"hello, how, are, you"!intercalate1 ", " $ "hello" :| []"hello"3intercalate1 mempty $ "I" :| ["Am", "Fine", "You?"] "IAmFineYou?"GInsert m between each pair of m derived from a.0intercalateMap1 " " show $ True :| [False, True]"True False True"%intercalateMap1 " " show $ True :| []"True"KDUsable default for foldMap, but only if you define foldMap1 yourselfCDEFGHIJK     CDEFGHIJK CDEFGHIJKCDEFGHIJK     (C) 2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Safe-Inferred LMNOLMNOLMNO LMNO Safe !"23468MP;Used to map a more traditional bifunctor into a semifunctorXSemifunctors map objects to objects, and arrows to arrows preserving connectivity 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!PQRSTUVWXYZ[\]^_ !"##$%& !"#$%&0123;<PQRSTUVWXYZ[\]^_XYPQZ[\]^_UVWRSTPQRSTUVWXYZ[\]^_ !"#(C) 2011-2012 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental MPTCs, GADTs Safe-Inferred!"2346`abcdefghijklmnopq`abcdefgbcqpdonem`alkfjigh`abcdefghijklmnopq(C) 2011-2012 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental MPTCs, GADTsSafe!"2346rstuvw'()*+,-./0rstuvwstuvrwrstuvw'()*+,-./0(C) 2011 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafexLaws: <!> is associative: (a <!> b) <!> c = a <!> (b <!> c) <$> left-distributes over <!>: f <$> (a <!> b) = (f <$> a) <!> (f <$> b)If extended to an 1 then y should equal 2.Ideally, an instance of xI also satisfies the "left distributon" law of MonadPlus with respect to  .: I<.> right-distributes over <!>: (a <!> b) <.> c = (a <.> c) <!> (b <.> c)But 3, 4, 5 a, 6 e m, and STM3 satisfy the alternative "left catch" law instead: pure a <!> b = pure aPHowever, this variation cannot be stated purely in terms of the dependencies of x.rWhen and if MonadPlus is successfully refactored, this class should also be refactored to remove these instances.BThe right distributive law should extend in the cases where the a  or @ is provided to yield variations of the right distributive law: S(m <!> n) >>- f = (m >>- f) <!> (m >>- f) (m <!> n) >>= f = (m >>= f) <!> (m >>= f)y( |) without a required empty7-This instance does not actually satisfy the ( .3) right distributive law It instead satisfies the  Left-Catch lawxyz{89:;<=>?@ABCDEFGHIJKLM7N xyz{xyz{xyz{89:;<=>?@ABCDEFGHIJKLM7Ny(C) 2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe|Laws: zero <!> m = m m <!> zero = mIf extended to an 1 then } should equal O.|}PQRSTUVWXYZ[\]^_`abcd xyz{|}|}|}PQRSTUVWXYZ[\]^_`abcdSafe~efghijklmnopq~~~efghijklmnopqr !"#$%%&'()*+,-./01234567889:;<=>??@ABCCDEFGHI J K L K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d d e f g h i j k l m n o p q rstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~semigroupoids-4.3Data.Functor.BindData.Functor.ExtendData.Functor.Bind.TransData.SemigroupoidData.Semigroupoid.Dual Data.GroupoidData.IsomorphismData.Semigroupoid.ProductData.Semigroupoid.CoproductData.Semigroupoid.ObData.Semigroup.FoldableData.Semigroup.TraversableData.SemifunctorData.Semifunctor.AssociativeData.Semifunctor.BraidedData.Functor.AltData.Functor.PlusData.Semigroupoid.StaticData.Traversable.InstancesData.Functor.ApplybaseGHC.BasefmapFunctor Data.Functor<$><$ comonad-4.2.2Control.Comonad$>Extend duplicatedextendedBind>>-join MaybeApply runMaybeApplyWrappedApplicativeWrapApplicativeunwrapApplicativeApply<.>.><.<..>liftF2liftF3 returning-<<->--<- apDefault BindTransliftBSemigetSemiWrappedCategory WrapCategoryunwrapCategory SemigroupoidoDualgetDualGroupoidinvIsoembedprojectProductPairdistributeDualProductfactorDualProduct CoproductRLdistributeDualCoproductfactorDualCoproductObsemiid $fOb(->)a$fObCokleislia $fObKleislia$fObCoproductR$fObCoproductL$fObProduct(,) Foldable1fold1foldMap1 intercalate1intercalateMap1 traverse1_for1_ sequenceA1_foldMapDefault1 Traversable1 traverse1 sequence1foldMap1DefaultBiWrappedTraversable1WrapTraversable1unwrapTraversable1WrappedFunctor WrapFunctor unwrapFunctor Semifunctorsemimap# semibimap semifirst semisecondfirstsecondDisassociative disassociate Associative associatekleisliAssociatecokleisliAssociatekleisliDisassociatecokleisliDisassociate$fDisassociativeCokleisliBi$fDisassociativeKleisliBi$fDisassociativeKleisliBi0$fDisassociative(->)Bi$fDisassociative(->)Bi0$fAssociativeCokleisliBi$fAssociativeKleisliBi$fAssociativeKleisliBi0$fAssociative(->)Bi$fAssociative(->)Bi0 SymmetricBraidedbraid kleisliBraidcokleisliBraidswapAltsomemanyPluszeroStatic runStatic$fExtendNonEmpty$fExtendIdentityT$fExtendIdentity$fExtendTracedT$fExtendStoreT $fExtendEnvT$fExtendCoproduct $fExtendTree $fExtendSeq $fExtend(->) $fExtend(,)$fExtendEither $fExtendMaybe $fExtend[]MonadreturnControl.Applicative Applicativepure $fBindIntMapcontainers-0.5.5.1Data.IntMap.BaseIntMap $fBindMap Data.Map.BaseMap $fApplyIntMap $fApplyMap $fBindTree $fBindSeq $fBindContT $fBindRWST $fBindRWST0 $fBindStateT $fBindStateT0 $fBindWriterT$fBindWriterT0 $fBindReaderT $fBindExceptT $fBindErrorT $fBindListT $fBindMaybeT$fBindWrappedMonad$fBindIdentityT$fBindIdentity $fBindOption $fBindMaybe$fBindIO$fBindNonEmpty$fBind[] $fBind(->) $fBindProduct $fBindEither $fBind(,)$fApplyCokleisli$fComonadMaybeApply$fExtendMaybeApply$fApplicativeMaybeApply$fApplyMaybeApply$fFunctorMaybeApply$fAlternativeWrappedApplicative$fApplicativeWrappedApplicative$fApplyWrappedApplicative$fFunctorWrappedApplicative$fApplyTracedT $fApplyStoreT $fApplyEnvT $fApplyContT $fApplyRWST $fApplyRWST0 $fApplyStateT$fApplyStateT0$fApplyWriterT$fApplyWriterT0 $fApplyListT$fApplyReaderT$fApplyExceptT $fApplyErrorT $fApplyMaybeT $fApplyTree $fApplySeq$fApplyWrappedArrow$fApplyWrappedMonad$fApplyIdentityT$fApplyIdentity $fApplyOption $fApplyMaybe $fApplyIO $fApply[]$fApplyZipList $fApply(->) $fApplyConst $fApplyEither$fApplyNonEmpty $fApply(,)$fApplyProduct$fApplyCompose$fBindTransContT$fBindTransRWST$fBindTransRWST0$fBindTransStateT$fBindTransStateT0$fBindTransWriterT$fBindTransWriterT0$fBindTransReaderT$fBindTransIdentityTControl.CategoryCategoryid$fSemigroupoid(,)$fCategory*Semi$fSemigroupoidSemi$fCategory*WrappedCategory$fSemigroupoidWrappedCategory$fSemigroupoidOp$fSemigroupoidCokleisli$fSemigroupoidKleisli$fSemigroupoid(->)$fCategory*Dual$fSemigroupoidDual$fGroupoidDual$fCategory*Iso $fGroupoidIso$fSemigroupoidIso$fGroupoidProduct$fSemigroupoidProduct$fGroupoidCoproduct$fSemigroupoidCoproductActgetActJoinWithjoinee $fFunctorAct$fSemigroupAct$fSemigroupJoinWith$fFoldable1(,)$fFoldable1NonEmpty$fFoldable1Coproduct$fFoldable1Product$fFoldable1Compose$fFoldable1IdentityT$fFoldable1Identity$fFoldable1Tree$fTraversable1(,)$fTraversable1NonEmpty$fTraversable1Tree$fTraversable1Coproduct$fTraversable1Product$fTraversable1Compose$fTraversable1IdentityT$fTraversable1IdentityfstPsndPleftright$fSemifunctorBiProductCokleisli$fSemifunctorBiProductKleisli$fSemifunctorBiProductKleisli0$fSemifunctorBiProduct(->)$fSemifunctorBiProduct(->)0$fSemifunctorfDualDual.$fSemifunctorWrappedTraversable1KleisliKleisli-$fSemifunctorWrappedFunctorCokleisliCokleisli)$fSemifunctorWrappedFunctorKleisliKleisli#$fSemifunctorWrappedFunctor(->)(->)>>><<<.$fSymmetricCokleisliBi$fSymmetricKleisliBi$fSymmetricKleisliBi0$fSymmetric(->)Bi$fSymmetric(->)Bi0$fBraidedCokleisliBi$fBraidedKleisliBi$fBraidedKleisliBi0$fBraided(->)Bi$fBraided(->)Bi0 Alternative<|> Data.MaybeMaybeghc-prim GHC.TypesIO Data.EitherEithertransformers-0.4.2.0Control.Monad.Trans.ErrorErrorT$fAltIO $fAltRWST $fAltRWST0 $fAltWriterT $fAltWriterT0 $fAltStateT $fAltStateT0 $fAltListT $fAltExceptT $fAltErrorT $fAltMaybeT $fAltReaderT$fAltIdentityT$fAltWrappedApplicative $fAltNonEmpty$fAltSeq $fAltIntMap$fAltMap$fAltWrappedArrow$fAltWrappedMonad $fAltOption $fAltMaybe$fAlt[] $fAltEitherempty $fPlusRWST $fPlusRWST0 $fPlusWriterT$fPlusWriterT0 $fPlusStateT $fPlusStateT0 $fPlusListT $fPlusErrorT $fPlusMaybeT $fPlusReaderT$fPlusIdentityT$fPlusWrappedApplicative $fPlusSeq $fPlusIntMap $fPlusMap$fPlusWrappedArrow$fPlusWrappedMonad $fPlusOption $fPlusMaybe$fPlus[]$fPlusIO$fArrowChoiceStatic$fArrowPlusStatic$fArrowZeroStatic $fArrowStatic$fCategory*Static$fSemigroupoidStatic$fComonadStatic$fExtendStatic$fApplicativeStatic $fPlusStatic $fAltStatic $fApplyStatic$fFunctorStatic