bluefin-0.0.0.0
Safe HaskellNone
LanguageHaskell2010

Bluefin.Coroutine

Synopsis

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

forEach Source #

Arguments

:: 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], ())

Effectful operations

yieldCoroutine Source #

Arguments

:: forall (e1 :: Effects) (es :: Effects) a b. e1 :> es 
=> Coroutine a b e1 
-> a

͘

-> Eff es b