úÎMÌI§=      !"#$%&'()*+,-./0123456789:;<None5Type of functions capable of combining two coroutines' ! values into a third one. Module  "Monad.Coroutine.SuspensionFunctors contains several  examples. IType of functions that can weave two coroutines into a single coroutine. [Type of functions that can bind two monadic values together, used to combine two coroutines' step results. The two  functions provided here are  and . The  functor instance doesn'Pt contain anything and cannot be constructed. Used for building non-suspendable  coroutines. ,Suspending, resumable monadic computations. Run the next step of a N computation. The result of the step execution will be either a suspension or  the final coroutine result. Suspend the current . Change the base monad of a . #Change the suspension functor of a . *Modify the first upcoming suspension of a . Convert a non-suspending  to the base monad. $Runs a single step of a suspendable C, using a function that extracts the coroutine resumption from its  suspension functor. Runs a suspendable  to its completion. 'Runs a suspendable coroutine much like <, but allows the resumption function to thread an arbitrary  state as well. A F that runs the two steps sequentially before combining their results. A & that runs the two steps in parallel.  Lifting a  onto a  monad transformer. (Weaves two coroutines into one, given a . to run the next step of each coroutine and a  to # combine the results of the steps. rWeaves a list of coroutines with the same suspension functor type into a single coroutine. The coroutines suspend  and resume in lockstep.  =>?@ABC    =>?@ABCNone &Class of functors that can be lifted. jConvert the ancestor functor into its descendant. The descendant functor typically contains the ancestor. 4Class of functors that can contain another functor. ;Type of functions capable of combining two child coroutines' ! values into a parent coroutine.  Use with the function . cCombines two alternative functors into one, applying one or the other. Used for nested coroutines. Like D" for the EitherFunctor data type. *Change the suspension functor of a nested .  Run a nested . that can suspend both itself and the current . !4Converts a coroutine into a child nested coroutine. "9Converts a coroutine into a descendant nested coroutine.  !"EFGH !" !"  !"EFGHNone# Combines a 0 of a $ with an . for a %. &Final result chunk '3A part of the result with the reader of more input )2Reader of more input, plus the result if there isn't any. *?A part of the result with the reader of more input and the EOF +<Final result chunk with the unconsumed portion of the input ,The , functor instance combines a 0 of a request with an . for a response. .The .g functor instance is equivalent to (->) but more descriptive. A coroutine with this suspension functor K demands a value whenever it suspends, before it can resume its execution. 0The 0f functor instance is equivalent to (,) but more descriptive. A coroutine with this suspension functor ) provides a value with every suspension. 20Suspend the current coroutine yielding a value. 39Suspend the current coroutine until a value is provided. 46Suspend yielding a request and awaiting the response. 5Suspend yielding a # and awaiting the %. 6UConverts a coroutine yielding collections of values into one yielding single values. 7UConverts a coroutine awaiting single values into one awaiting collections of values. 8Weaves the suspensions of a 0 and an .! coroutine together into a plain I coroutine. If the  0! coroutine terminates first, the .2 one is resumed using the argument default value. 9Like 8 , except the . coroutine expects J-wrapped values. After the 0 coroutine  terminates, the . coroutine receives only K. :Weaves two complementary ,( coroutine suspensions into a coroutine 2ing both requests. If one p coroutine terminates before the other, the remaining coroutine is fed the appropriate default value argument. ;.The consumer coroutine requests input through # and gets % in response. The producer T coroutine receives the unconsumed portion of its last requested chunk as response. <Like ; but for nested coroutines. #L$%&'()*+,-./0123456789:;<MNOP#$%&'()*+,-./0123456789:;<01./,-#%'&$(+*)23456789:;<#L$%'&(+*),-./0123456789:;<MNOPQ       !"#$%&'()*+,-.//001123456789:;<=>?@ABCDEFGHIJKLMDNODNP&QRSTUmonad-coroutine-0.8Control.Monad.CoroutineControl.Monad.Coroutine.Nested*Control.Monad.Coroutine.SuspensionFunctors WeaveStepperWeaver PairBinderNaughtCoroutineStepResult CoroutineresumesuspendmapMonad mapSuspensionmapFirstSuspension runCoroutinebounce pogoStickfoldRunsequentialBinderparallelBinder liftBinderweavemergeAncestorFunctor liftFunctor ChildFunctorParentwrapNestWeaveStepper EitherFunctorRightFLeftF eitherFunctormapNestedSuspensionpogoStickNested liftParent liftAncestor ReadRequestReader ReadingResult FinalResult ResultPartReadingDeferredAdvanceFinalRequestAwaitYieldyieldawaitrequest requestRead concatYields concatAwaitsweaveAwaitYieldweaveAwaitMaybeYield weaveRequestsweaveReadWriteRequestsweaveNestedReadWriteRequests$fFunctorNaught$fMonadIOCoroutine$fMonadTransCoroutine$fMonadParallelCoroutine$fMonadCoroutine$fApplicativeCoroutine$fFunctorCoroutinebase Data.Eithereither$fAncestorFunctorad$fAncestorFunctoraa$fChildFunctorEitherFunctor$fFunctorEitherFunctortransformers-0.3.0.0Data.Functor.IdentityIdentity Data.MaybeMaybeNothing$fFunctorReadRequest$fFunctorRequest$fFunctorAwait$fFunctorYield