úÎ1Ø/m*      !"#$%&'()_A simple record containing the resolver functions for all possible coroutine pair suspensions. Eresolves the left suspension functor into the resumption it contains 2resolves the right suspension into its resumption Tinvoked when both coroutines are suspended, resolves both suspensions or either one ^Combines two functors into one, applying either or both of them. Used for coupled coroutines.  /Combines two functors into one, applying both. 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. LCombines two values under two functors into a pair of values under a single  . Suspend the current  . Change the base monad of a  . #Change the suspension functor of a  . Convert a non-suspending   to the base monad. Run a suspendable  P, using a function that extracts the coroutine resumption from each suspension. 'Runs a suspendable coroutine much like <, but allows the resumption function to thread an arbitrary  state as well. SWeaves two coroutines into one. The two coroutines suspend and resume in lockstep. rWeaves a list of coroutines with the same suspension functor type into a single coroutine. The coroutines suspend  and resume in lockstep. qRuns two coroutines concurrently. The first argument is used to run the next step of each coroutine, the next to R convert the left, right, or both suspensions into the corresponding resumptions.          cCombines two alternative functors into one, applying one or the other. Used for nested coroutines. The  functor instance combines a !  of a request with an  for a response. The > functor instance is equivalent to (->) but more descriptive.  The ! = functor instance is equivalent to (,) but more descriptive. !"Suspend yielding a value. ##Suspend until a value is provided. $6Suspend yielding a request and awaiting the response.  !"#$ !"#$  !!"#$ %&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. -.& Run a nested  . that can suspend both itself and the current  . ''Weaves two nested coroutines into one. (Like e, but for nested coroutines that are allowed to suspend the current coroutine as well as themselves. ] If both coroutines try to suspend the current coroutine in the same step, the left coroutine's suspension will have  precedence. )9Converts a coroutine into a descendant nested coroutine. %&'()&'(%)%&'()/       !"#$%&'()*+,-monad-coroutine-0.5Control.Monad.Coroutine*Control.Monad.Coroutine.SuspensionFunctorsControl.Monad.Coroutine.NestedSeesawResolver resumeLeft resumeRight resumeAny SomeFunctorBoth RightSomeLeftSome NestedFunctorNaught CoroutineresumenestsuspendmapMonad mapSuspension runCoroutine pogoStickfoldRuncouplemergeseesaw EitherFunctorRightFLeftFRequestAwaitYieldyieldawaitrequestAncestorFunctorpogoStickNested coupleNested seesawNestedliftOutCoroutineStepResult liftFunctor ChildFunctorParentwrap