bluefin-0.0.17.1: The Bluefin effect system
Safe HaskellNone
LanguageHaskell2010

Bluefin.Consume

Synopsis

Documentation

Consume allows you to await values during the execution of a Bluefin operation. It provides similar functionality to await from Conduit or Pipes.

Handle

type Consume a = Coroutine () a #

Handlers

consumeEach #

Arguments

:: forall b (es :: Effects) r. (forall (e :: Effects). Consume b e -> Eff (e :& es) r)

Body

-> Eff es b

Value to send to each await in the body.

-> Eff es r 

A version of forEach specialized to Consume. Every time the Consume is used to await a b, feed it the one created by the handler.

consumeStream #

Arguments

:: forall a (es :: Effects) r. (forall (e :: Effects). Consume a e -> Eff (e :& es) r)

Each await from the Consume ...

-> (forall (e :: Effects). Stream a e -> Eff (e :& es) r)

... receives the value yielded from the Stream

-> Eff es r 

streamConsume #

Arguments

:: forall a (es :: Effects) r. (forall (e :: Effects). Stream a e -> Eff (e :& es) r) 
-> (forall (e :: Effects). Consume a e -> Eff (e :& es) r) 
-> Eff es r

͘

Argument-flipped version of consumeStream

Effectful operations

await :: forall (e :: Effects) (es :: Effects) a. e :> es => Consume a e -> Eff es a #

takeConsume #

Arguments

:: forall (ea :: Effects) (es :: Effects) (eb :: Effects) a. (ea :> es, eb :> es) 
=> Int 
-> Consume a ea 
-> Stream a eb 
-> Eff es ()

͘

runPureEff $ yieldToList $ yOut -> do
  consumeStream
    (c -> takeConsume 4 c yOut)
    (yIn -> inFoldable [1..10] yIn)
([1,2,3,4],())