bluefin-0.0.3.0: The Bluefin effect system
Safe HaskellSafe-Inferred
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) #

A handle to a coroutine that expects values of type a and then yields values of type b.

Handlers

forEach #

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 #

Arguments

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

͘

-> Eff es b