packages feed

polysemy-conc-0.14.0.0: lib/Polysemy/Conc/Interpreter/SyncRead.hs

-- | Description: Interpreter for 'SyncRead' that reinterprets to 'Sync'.
module Polysemy.Conc.Interpreter.SyncRead where

import qualified Polysemy.Conc.Effect.Sync as Sync
import Polysemy.Conc.Effect.Sync (Sync)
import qualified Polysemy.Conc.Effect.SyncRead as SyncRead
import Polysemy.Conc.Effect.SyncRead (SyncRead)

-- | Run 'SyncRead' in terms of 'Sync'.
syncRead ::
  ∀ d r .
  Member (Sync d) r =>
  InterpreterFor (SyncRead d) r
syncRead =
  interpret \case
    SyncRead.Block ->
      Sync.block
    SyncRead.Wait u ->
      Sync.wait u
    SyncRead.Try ->
      Sync.try
    SyncRead.Empty ->
      Sync.empty @d
{-# inline syncRead #-}