@hackage ki-effectful0.1.0.0

Adaptation of the ki library for the effectful ecosystem.

ki-effectful

Build Status Hackage License: MIT

Description

A StructuredConcurrency effect for the effectful ecosystem.

How to use

This library exposes the following elements:

  • StructuredConcurrency — The type-level effect that you can declare in your type signatures.

example:

runStructuredConcurrency :: IOE :> es => Eff (StructuredConcurrency : es) a -> Eff es a
  • The ki api lifted to Eff using the effect local rep to store the scope:

example:

scoped :: StructuredConcurrency :> es => Eff es a -> Eff es a
fork :: StructuredConcurrency :> es =>   Eff es a -> Eff es (Thread a)
  • Helper function to access the current scope:
testScopeLifting :: StructuredConcurrency :> es => Eff es Int
testScopeLifting = withCurrentScope $ \runInScope -> do
    child <- scoped $ do
        runInScope $ fork $ pure 42
    atomically $ await child