Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
Coroutine
allows to yield values and receive results back.
It is not documented yet. You might want to start with
Bluefin.Stream, which is the most common way to use
coroutines.
Handle
data Coroutine a b (s :: Effects) Source #
A handle to a coroutine that expects values of type a
and then
yields values of type b
.
Handlers
:: forall a b (es :: Effects) r. (forall (e1 :: Effects). Coroutine a b e1 -> Eff (e1 :& es) r) | |
-> (a -> Eff es b) | Apply this effectful function for each element of the coroutine |
-> Eff es r |
>>> runPureEff $ yieldToList $ \y -> do forEach (inFoldable [0 .. 3]) $ \i -> do yield y i yield y (i * 10) ([0, 0, 1, 10, 2, 20, 3, 30], ())