!X      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'() * + , - . / 0 1 2 3 4 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 VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable TrustworthyUVf  semigroupoids Iduplicated = extended id fmap (fmap f) . duplicated = duplicated . fmap f  semigroupoids !extended f = fmap f . duplicated  (C) 2011-2018 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Trustworthy1MUVfQ - semigroupoids a : b "a    a 9 b . semigroupoids a ; b "a   a 9 b / semigroupoidsA  sans .Minimal definition: Either 1 or 0NIf 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)2 semigroupoids8Transform an Apply into an Applicative by adding a unit.5 semigroupoidsWrap an  to be used as a member of 88 semigroupoidsBA strong lax semi-monoidal endofunctor. This is equivalent to an  without .Laws: ()  u 9 v 9 w = u 9 (v 9 w) x 9 (f  y) = ( f)  x 9 y f  (x 9 y) = (f )  x 9 y The laws imply that : and ; really ignore their left and right results, respectively, and really return their right and left results, respectively. Specifically, (mf  m) : (nf  n) = nf  (m : n) (mf  m) ; (nf  n) = mf  (m ; n) : semigroupoids  a : b =    a 9 b; semigroupoids  a ; b =   a 9 b< semigroupoids2Lift a binary function into a comonad with zipping? semigroupoidsA  is not , but it is an instance of 8A semigroupoidsA 'K1 i c' is not  unless its c is a , but it is an instance of 8Q semigroupoidsA 'StoreT s w' is not  unless its s is a , but it is an instance of 8R semigroupoidsAn 'EnvT e w' is not  unless its e is a , but it is an instance of 8T semigroupoidsA 'WriterT w m' is not  unless its w is a , but it is an instance of 8U semigroupoidsA 'WriterT w m' is not  unless its w is a , but it is an instance of 8[ semigroupoidsA 'HashMap k' is not , but it is an instance of 8^ semigroupoidsAn  is not , but it is an instance of 8_ semigroupoidsA 'Map k' is not , but it is an instance of 8l semigroupoidsA 'Const m' is not  unless its m is a , but it is an instance of 8o semigroupoidsA '(,) m' is not  unless its m is a , but it is an instance of 8s semigroupoidsA 'Constant f' is not  unless its f is a , but it is an instance of 8 semigroupoidsA  is not a , but it is an instance of / semigroupoidsA 'HashMap k' is not a , but it is an instance of / semigroupoidsAn  is not a , but it is an instance of / semigroupoidsA 'Map k' is not a , but it is an instance of / semigroupoidsAn 'RWST r w s m' is not a  unless its w is a , but it is an instance of / semigroupoidsAn 'RWST r w s m' is not a  unless its w is a , but it is an instance of / semigroupoidsA 'WriterT w m' is not a  unless its w is a , but it is an instance of / semigroupoidsA 'WriterT w m' is not a  unless its w is a , but it is an instance of / semigroupoidsA '(,) m' is not a  unless its m is a , but it is an instance of / semigroupoidsAn 'RWST r w s m' is not  unless its w is a , but it is an instance of 8 semigroupoidsAn 'RWST r w s m' is not  unless its w is a , but it is an instance of 8+,.-/1023456789;:<=>89;:<567234/10>=+,.-,4-4.40194:4;4(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafeV semigroupoids A variant of 9 with the arguments reversed. semigroupoids3Lift a ternary function into a comonad with zipping23456789;:<89;:<5672344(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafeYU/1023456789;:<=>89;:<567234/10>=111(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe] semigroupoids1A subset of monad transformers can transform any / as well.(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Trustworthy@SUVXqM semigroupoidsLaws: <!> is associative: (a <!> b) <!> c = a <!> (b <!> c) <$> left-distributes over <!>: f <$> (a <!> b) = (f <$> a) <!> (f <$> b)If extended to an  then  should equal .Ideally, an instance of I also satisfies the "left distributon" law of MonadPlus with respect to 9: I<.> right-distributes over <!>: (a <!> b) <.> c = (a <.> c) <!> (b <.> c)But , ,  a,  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 .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) semigroupoids without a required empty semigroupoids One or none. semigroupoids-This instance does not actually satisfy the (9C) right distributive law It instead satisfies the "Left-Catch" law23456789;:<3(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafet semigroupoidsLift binary functions semigroupoidsLift ternary functions  +,.- +,.- 4(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable TrustworthyUVy semigroupoidsLaws: zero <!> m = m m <!> zero = mIf extended to an  then  should equal .23456789;:< (C) 2007-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableNone&'-H}./ semigroupoids sans 9 semigroupoids Ahttp://en.wikipedia.org/wiki/Band_(mathematics)#Rectangular_bands)*+,-./0/0,-.)*+ (C) 2007-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableNone-Hq?@A?@A (C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisional polykindsNone&'-=?HND semigroupoidssemigroupoid with inverses. This technically should be a category with inverses, except we need to use Ob to define the valid objects for the categoryDEDE (C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisional polykindsNone-HeJKLMJKLM (C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimentalnon-portable (flexible MPTCs)None-=>?@AHQRQR(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisional polykindsNoneVWXVWX(C) 2011-2015,2018 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisional polykindsSafe*(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable TrustworthyUVIfghijklijklfgh(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe semigroupoidsFUsable default for foldMap, but only if you define bifoldMap1 yourselffghfgh(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafew semigroupoids Insert an m- between each pair of 't m'. Equivalent to  with  as the second argument.4intercalate1 ", " $ "hello" :| ["how", "are", "you"]"hello, how, are, you"!intercalate1 ", " $ "hello" :| []"hello"3intercalate1 mempty $ "I" :| ["Am", "Fine", "You?"] "IAmFineYou?" semigroupoidsInsert m between each pair of m derived from a.0intercalateMap1 " " show $ True :| [False, True]"True False True"%intercalateMap1 " " show $ True :| []"True" semigroupoidsDUsable default for foldMap, but only if you define foldMap1 yourself semigroupoidslMonadic fold over the elements of a non-empty structure, associating to the right, i.e. from right to left. \let g = (=<<) . f in foldrM1 f (x1 :| [x2, ..., xn]) == x1 `g` (x2 `g` ... (xn-1 `f` xn)...) semigroupoidskMonadic fold over the elements of a non-empty structure, associating to the left, i.e. from left to right. flet g = flip $ (=<<) . f in foldlM1 f (x1 :| [x2, ..., xn]) == (...((x1 `f` x2) `g` x2) `g`...) `g` xn ijkl ijkl(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable TrustworthyUV(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe!(C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABC D D E F G H I J K L M N O P Q R S T U V W X Y Y Z [ \ ] ^ _ ` a b c c d e f g h i j k l mnnopqrstuvwxyz{|}~     )semigroupoids-5.3.4-w5wpvXNssmA4BCVoX2GwVData.Functor.ApplyData.Bifunctor.ApplyData.Functor.ExtendData.Functor.BindData.Functor.Bind.ClassData.Functor.Bind.TransData.Functor.AltData.Functor.PlusData.SemigroupoidData.Semigroupoid.Dual Data.GroupoidData.IsomorphismData.Semigroupoid.ObData.Semigroupoid.StaticData.Semigroup.Foldable.ClassData.Semigroup.BifoldableData.Semigroup.Foldable Data.Semigroup.Traversable.ClassData.Semigroup.TraversableData.Semigroup.BitraversableData.Traversable.InstancesbaseGHC.BasefmapFunctorData.Bifunctorsecondfirstbimap Bifunctor Data.Functor$><$><$&bifunctors-5.5.6-LvbIPDJu0IxM4zwZfDbk4Data.Biapplicative<<$>>Extend duplicatedextended $fExtendMax $fExtendMin $fExtendLast $fExtendFirst $fExtendAlt $fExtendDual$fExtendProduct $fExtendSum $fExtendRec1 $fExtendPar1 $fExtendM1 $fExtendV1 $fExtendU1 $fExtend:+: $fExtendSum0$fExtendNonEmpty$fExtendIdentityT$fExtendIdentity$fExtendTracedT$fExtendStoreT $fExtendEnvT $fExtendTree $fExtendSeq $fExtend-> $fExtend(,)$fExtendEither $fExtendMaybe $fExtendProxy$fExtendTagged $fExtend[]Biapply<<.>>.>><<.Bind>>-join MaybeApply runMaybeApplyWrappedApplicativeWrapApplicativeunwrapApplicativeApply<.>.><.liftF2 returning apDefault $fApplyV1 $fApplyPar1 $fApplyK1 $fApplyU1 $fApply:.: $fApply:*: $fApplyMax $fApplyMin $fApplyLast $fApplyFirst $fApplyLast0 $fApplyFirst0 $fApplyDual$fApplyProduct $fApplySum $fApplyDown$fApplyCokleisli$fApplyTracedT $fApplyStoreT $fApplyEnvT $fApplyContT$fApplyWriterT$fApplyWriterT0 $fApplyListT$fApplyReaderT$fApplyExceptT $fApplyErrorT $fApplyMaybeT$fApplyHashMap $fApplyTree $fApplySeq $fApplyIntMap $fApplyMap$fApplyQ$fApplyComplex$fApplyWrappedArrow$fApplyWrappedMonad$fApplyIdentityT$fApplyIdentity $fApplyOption $fApplyMaybe $fApplyIO $fApply[]$fApplyZipList $fApply-> $fApplyConst $fApplyEither$fApplyNonEmpty $fApply(,)$fApplyReverse$fApplyProduct0 $fApplyLift$fApplyConstant$fApplyCompose$fApplyBackwards $fApplyProxy $fApplyTagged$fAlternativeWrappedApplicative$fApplicativeWrappedApplicative$fApplyWrappedApplicative$fFunctorWrappedApplicative$fComonadMaybeApply$fExtendMaybeApply$fApplicativeMaybeApply$fApplyMaybeApply$fFunctorMaybeApply$fBindV1 $fBindMax $fBindMin $fBindLast $fBindFirst $fBindAlt $fBindLast0 $fBindFirst0 $fBindDual $fBindProduct $fBindSum $fBindDown $fBindHashMap $fBindTree $fBindSeq $fBindIntMap $fBindMap $fBindComplex $fBindContT $fBindRWST $fBindRWST0 $fBindStateT $fBindStateT0 $fBindWriterT$fBindWriterT0 $fBindReaderT $fBindExceptT $fBindErrorT $fBindListT $fBindMaybeT$fBindWrappedMonad$fBindIdentityT$fBindQ$fBindIdentity $fBindOption $fBindMaybe$fBindIO$fBindNonEmpty$fBind[]$fBind->$fBindProduct0 $fBindEither $fBindProxy $fBindTagged $fBind(,) $fApplyRWST $fApplyRWST0 $fApplyStateT$fApplyStateT0$fBiapplyWrappedBifunctor$fBiapplyTannen$fBiapplyProduct $fApplyJoin$fBiapplyJoker $fBiapplyFlip$fBiapplyClown $fBiapplyBiff$fBiapplyTagged$fBiapplyConst$fBiapply(,,,,)$fBiapply(,,,) $fBiapply(,,) $fBiapplyArg $fBiapply(,) $fApplyRec1 $fApplyM1 $fApplyAlt<..>liftF3-<<->--<- BindTransliftB$fBindTransContT$fBindTransRWST$fBindTransRWST0$fBindTransStateT$fBindTransStateT0$fBindTransWriterT$fBindTransWriterT0$fBindTransReaderT$fBindTransIdentityTAltsomemanyoptional $fAltLast $fAltFirst $fAltLast0 $fAltFirst0 $fAltReverse $fAltProduct $fAltLift $fAltCompose$fAltBackwards $fAltRWST $fAltRWST0 $fAltWriterT $fAltWriterT0 $fAltStateT $fAltStateT0 $fAltListT $fAltExceptT $fAltErrorT $fAltMaybeT $fAltReaderT$fAltIdentityT$fAltWrappedApplicative $fAltNonEmpty $fAltHashMap$fAltSeq $fAltIntMap$fAltMap$fAltWrappedArrow$fAltWrappedMonad $fAltOption $fAltMaybe$fAlt[]$fAltIO $fAltEither $fAltProxy$fAltV1$fAltU1$fAlt:*: $fAltRec1$fAltM1<<..>>bilift2bilift3Pluszero $fPlusLast $fPlusFirst $fPlusReverse $fPlusProduct $fPlusLift $fPlusCompose$fPlusBackwards $fPlusRWST $fPlusRWST0 $fPlusWriterT$fPlusWriterT0 $fPlusStateT $fPlusStateT0 $fPlusListT $fPlusExceptT $fPlusErrorT $fPlusMaybeT $fPlusReaderT$fPlusIdentityT$fPlusWrappedApplicative $fPlusHashMap $fPlusSeq $fPlusIntMap $fPlusMap$fPlusWrappedArrow$fPlusWrappedMonad $fPlusOption $fPlusMaybe$fPlus[]$fPlusIO $fPlusRec1$fPlusM1 $fPlus:*:$fPlusU1 $fPlusProxySemigetSemiWrappedCategory WrapCategoryunwrapCategory Semigroupoido$fSemigroupoidk:~~:$fSemigroupoidk:~:$fSemigroupoidkCoercion$fSemigroupoidTYPETagged$fSemigroupoidTYPEConst$fSemigroupoidTYPEOp$fSemigroupoidTYPECokleisli$fSemigroupoidTYPEKleisli$fSemigroupoidTYPE(,)$fSemigroupoidTYPE->$fCategorykWrappedCategory$fSemigroupoidkWrappedCategory$fCategorykSemi$fSemigroupoidkSemiDualgetDual$fCategorykDual$fSemigroupoidkDualGroupoidinv$fGroupoidk:~~:$fGroupoidk:~:$fGroupoidkCoercion$fGroupoidkDualIsoembedproject$fCategorykIso$fGroupoidkIso$fSemigroupoidkIsoObsemiid $fObTYPE->a$fObTYPECokleislia$fObTYPEKleisliaStatic runStatic$fArrowChoiceStatic$fArrowPlusStatic$fArrowZeroStatic $fArrowStatic$fCategoryTYPEStatic$fSemigroupoidTYPEStatic$fComonadStatic$fExtendStatic$fApplicativeStatic $fPlusStatic $fAltStatic $fApplyStatic$fFunctorStatic Bifoldable1bifold1 bifoldMap1 Foldable1fold1foldMap1 toNonEmpty$fFoldable1Joker$fFoldable1(,)$fFoldable1NonEmpty$fFoldable1Sum$fFoldable1Reverse$fFoldable1Product$fFoldable1Lift$fFoldable1Compose$fFoldable1Backwards$fFoldable1IdentityT$fFoldable1Tagged$fFoldable1Identity$fFoldable1Tree$fFoldable1Complex$fFoldable1:.: $fFoldable1V1$fFoldable1:+:$fFoldable1:*:$fFoldable1Par1 $fFoldable1M1$fFoldable1Rec1$fFoldable1Max$fFoldable1Min$fFoldable1Last$fFoldable1First$fFoldable1Alt$fFoldable1Dual$fFoldable1Product0$fFoldable1Sum0$fBifoldable1WrappedBifunctor$fBifoldable1Tannen$fBifoldable1Product$fBifoldable1Joker$fFoldable1Join$fBifoldable1Flip$fBifoldable1Clown$fBifoldable1Biff$fBifoldable1Tagged$fBifoldable1Const$fBifoldable1(,,,,)$fBifoldable1(,,,)$fBifoldable1(,,)$fBifoldable1(,)$fBifoldable1Either$fBifoldable1Arg bitraverse1_bifor1_ bisequenceA1_bifoldMapDefault1 $fFunctorAct$fSemigroupAct intercalate1intercalateMap1 traverse1_for1_ sequenceA1_foldMapDefault1asum1foldrM1foldlM1$fSemigroupJoinWith$fSemigroupAlt_ Traversable1 traverse1 sequence1Bitraversable1 bitraverse1 bisequence1 $fBitraversable1WrappedBifunctor$fBitraversable1Product$fBitraversable1Flip$fBitraversable1Tagged$fBitraversable1Const$fBitraversable1(,,,,)$fBitraversable1(,,,)$fBitraversable1(,,)$fBitraversable1(,)$fBitraversable1Either$fBitraversable1Arg$fTraversable1Max$fTraversable1Min$fTraversable1Last$fTraversable1First$fTraversable1Alt$fTraversable1Dual$fTraversable1Product$fTraversable1Sum$fTraversable1Joker$fTraversable1(,)$fTraversable1NonEmpty$fTraversable1Tree$fTraversable1Tagged$fTraversable1Complex$fTraversable1Sum0$fTraversable1Reverse$fTraversable1Product0$fTraversable1Lift$fTraversable1Compose$fTraversable1Backwards$fTraversable1IdentityT$fTraversable1Identity$fTraversable1:.:$fTraversable1:+:$fTraversable1:*:$fTraversable1V1$fTraversable1Par1$fTraversable1M1$fTraversable1Rec1$fBitraversable1Tannen$fBitraversable1Joker$fTraversable1Join$fBitraversable1Clown$fBitraversable1BifffoldMap1DefaultbifoldMap1DefaultconstControl.CategoryidMonadreturn Applicativepure. GHC.GenericsV1Monoidcontainers-0.6.0.1Data.IntMap.InternalIntMap Alternative<|> GHC.MaybeMaybeghc-prim GHC.TypesIO Data.EitherEithertransformers-0.5.5.0Control.Monad.Trans.ErrorErrorTemptyCategory