Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
Coroutine
allows to yield values and receive results back.
Wikipedia
suggests
that Bluefin's coroutines are "second-class stackful
coroutines". This module 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) #
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], ())