Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- whileEmpty :: forall a r. Member (Sync a) r => Sem r () -> Sem r ()
- whileEmptyInterval :: forall a u t d r. TimeUnit u => Members [Time t d, Sync a] r => u -> Sem r () -> Sem r ()
- withSync :: forall d res r. Member (Scoped (SyncResources res) (Sync d)) r => InterpreterFor (Sync d) r
- data Sync d :: Effect
- type ScopedSync res a = Scoped (SyncResources res) (Sync a)
- data SyncResources a
- block :: forall d r. MemberWithError (Sync d) r => Sem r d
- wait :: forall d r u. (MemberWithError (Sync d) r, TimeUnit u) => u -> Sem r (Maybe d)
- try :: forall d r. MemberWithError (Sync d) r => Sem r (Maybe d)
- takeBlock :: forall d r. MemberWithError (Sync d) r => Sem r d
- takeWait :: forall d r u. (MemberWithError (Sync d) r, TimeUnit u) => u -> Sem r (Maybe d)
- takeTry :: forall d r. MemberWithError (Sync d) r => Sem r (Maybe d)
- readBlock :: forall d r. MemberWithError (Sync d) r => Sem r d
- readWait :: forall d r u. (MemberWithError (Sync d) r, TimeUnit u) => u -> Sem r (Maybe d)
- readTry :: forall d r. MemberWithError (Sync d) r => Sem r (Maybe d)
- putBlock :: forall d r. MemberWithError (Sync d) r => d -> Sem r ()
- putWait :: forall d r u. (MemberWithError (Sync d) r, TimeUnit u) => u -> d -> Sem r Bool
- putTry :: forall d r. MemberWithError (Sync d) r => d -> Sem r Bool
- empty :: forall d r. MemberWithError (Sync d) r => Sem r Bool
Documentation
whileEmpty :: forall a r. Member (Sync a) r => Sem r () -> Sem r () Source #
Run an action repeatedly until the Sync
variable is available.
whileEmptyInterval :: forall a u t d r. TimeUnit u => Members [Time t d, Sync a] r => u -> Sem r () -> Sem r () Source #
Run an action repeatedly until the Sync
variable is available, waiting for the specified time between executions.
withSync :: forall d res r. Member (Scoped (SyncResources res) (Sync d)) r => InterpreterFor (Sync d) r Source #
Run an action with a locally scoped Sync
variable.
data Sync d :: Effect Source #
Abstracts an MVar
.
For documentation on the constructors, see the module Polysemy.Conc.Effect.Sync.
import Polysemy.Conc (Sync) import qualified Polysemy.Conc.Effect.Sync as Sync prog :: Member (Sync Int) r => Sem r Int prog = do Sync.putTry 5 Sync.takeBlock
Instances
type DefiningModule Sync Source # | |
Defined in Polysemy.Conc.Effect.Sync |
type ScopedSync res a = Scoped (SyncResources res) (Sync a) Source #
data SyncResources a Source #