monad-coroutine 0.7 → 0.7.1
raw patch · 2 files changed
+8/−8 lines, 2 files
Files
Control/Monad/Coroutine/SuspensionFunctors.hs view
@@ -60,8 +60,8 @@ instance Functor (Request x f) where fmap f (Request x g) = Request x (f . g) -data ParseRequest x z = forall y. MonoidNull y => - ParseRequest ([x] -> [x]) (Parser [x] y) ((y, Maybe (Parser [x] y)) -> z)+data ParseRequest x z = forall a y. MonoidNull y => + ParseRequest ([x] -> [x]) (Parser a [x] y) ((y, Maybe (Parser a [x] y)) -> z) instance Functor (ParseRequest x) where fmap f (ParseRequest b p g) = ParseRequest b p (f . g) @@ -89,7 +89,7 @@ request x = suspend (Request x return) -- | Suspend yielding a request and awaiting the response.-requestParse :: (Monad m, MonoidNull y) => Parser [x] y -> Coroutine (ParseRequest x) m (y, Maybe (Parser [x] y))+requestParse :: (Monad m, MonoidNull y) => Parser a [x] y -> Coroutine (ParseRequest x) m (y, Maybe (Parser a [x] y)) requestParse p = suspend (ParseRequest id p return) -- | Converts a coroutine yielding collections of values into one yielding single values.@@ -214,15 +214,15 @@ -- | Like 'parserYieldResolver', the only difference being that the producing coroutine sends its chunks using 'request' -- rather than 'yield'. The feedback received from 'request' is the unconsumed remainder of the chunk, which lets the -- coroutine know when its sibling terminates.-parserRequestResolver :: Monoid y => SeesawResolver (Request (Parser [x] y) y) (Request [x] [x])- (Request (Parser [x] y) y) (Request [x] [x])+parserRequestResolver :: Monoid y => SeesawResolver (Request (Parser a [x] y) y) (Request [x] [x])+ (Request (Parser a [x] y) y) (Request [x] [x]) parserRequestResolver = liftedParserRequestResolver id id -- | A generic version of 'parserRequestResolver', allowing coroutines with 'Request' functors embedded in other -- functors. liftedParserRequestResolver :: (Functor s1, Functor s2, Monoid y) =>- (forall a. Request (Parser [x] y) y a -> s1 a) -> (forall a. Request [x] [x] a -> s2 a)- -> SeesawResolver (Request (Parser [x] y) y) (Request [x] [x]) s1 s2+ (forall b. Request (Parser a [x] y) y b -> s1 b) -> (forall b. Request [x] [x] b -> s2 b)+ -> SeesawResolver (Request (Parser a [x] y) y) (Request [x] [x]) s1 s2 liftedParserRequestResolver lift1 lift2 = SeesawResolver { resumeLeft= \(Request _ c)-> c mempty, resumeRight= \(Request chunk c)-> c chunk,
monad-coroutine.cabal view
@@ -1,5 +1,5 @@ Name: monad-coroutine-Version: 0.7+Version: 0.7.1 Cabal-Version: >= 1.2 Build-Type: Simple Synopsis: Coroutine monad transformer for suspending and resuming monadic computations