@@ -2,7 +2,10 @@ module Control.Monad.Aff.AVar
22 ( module Control.Monad.Eff.AVar
33 , makeVar
44 , makeEmptyVar
5+ , status
56 , isEmptyVar
7+ , isFilledVar
8+ , isKilledVar
69 , takeVar
710 , tryTakeVar
811 , putVar
@@ -15,7 +18,7 @@ module Control.Monad.Aff.AVar
1518import Prelude
1619import Control.Monad.Aff (Aff , Canceler (..), makeAff )
1720import Control.Monad.Eff (Eff )
18- import Control.Monad.Eff.AVar (AVar , AVAR )
21+ import Control.Monad.Eff.AVar (AVar , AVAR , AVarStatus (..), isEmpty , isFilled , isKilled )
1922import Control.Monad.Eff.AVar as AVar
2023import Control.Monad.Eff.Class (liftEff )
2124import Control.Monad.Eff.Exception (Error )
@@ -32,10 +35,22 @@ makeVar = liftEff <<< AVar.makeVar
3235makeEmptyVar ∷ ∀ eff a . Aff (avar ∷ AVAR | eff ) (AVar a )
3336makeEmptyVar = liftEff AVar .makeEmptyVar
3437
35- -- | Synchronously checks whether an AVar currently has a value.
38+ -- | Synchronously checks the status of an AVar.
39+ status ∷ ∀ eff a . AVar a → Aff (avar ∷ AVAR | eff ) (AVar.AVarStatus a )
40+ status = liftEff <<< AVar .status
41+
42+ -- | Synchronously checks whether an AVar currently is empty.
3643isEmptyVar ∷ ∀ eff a . AVar a → Aff (avar ∷ AVAR | eff ) Boolean
3744isEmptyVar = liftEff <<< AVar .isEmptyVar
3845
46+ -- | Synchronously checks whether an AVar currently has a value.
47+ isFilledVar ∷ ∀ eff a . AVar a → Aff (avar ∷ AVAR | eff ) Boolean
48+ isFilledVar = liftEff <<< AVar .isFilledVar
49+
50+ -- | Synchronously checks whether an AVar has been killed.
51+ isKilledVar ∷ ∀ eff a . AVar a → Aff (avar ∷ AVAR | eff ) Boolean
52+ isKilledVar = liftEff <<< AVar .isKilledVar
53+
3954-- | Takes the AVar value, leaving it empty. If the AVar is already empty,
4055-- | the callback will be queued until the AVar is filled. Multiple takes will
4156-- | resolve in order as the AVar fills.
@@ -52,15 +67,15 @@ tryTakeVar = liftEff <<< AVar.tryTakeVar
5267-- | Sets the value of the AVar. If the AVar is already filled, it will be
5368-- | queued until the value is emptied. Multiple puts will resolve in order as
5469-- | the AVar becomes available.
55- putVar ∷ ∀ eff a . AVar a → a → Aff (avar ∷ AVAR | eff ) Unit
56- putVar avar value = makeAff \k → do
57- c ← AVar .putVar avar value k
70+ putVar ∷ ∀ eff a . a → AVar a → Aff (avar ∷ AVAR | eff ) Unit
71+ putVar value avar = makeAff \k → do
72+ c ← AVar .putVar value avar k
5873 pure (toCanceler c)
5974
6075-- | Attempts to synchronously fill an AVar. If the AVar is already filled,
6176-- | this will do nothing. Returns true or false depending on if it succeeded.
62- tryPutVar ∷ ∀ eff a . AVar a → a → Aff (avar ∷ AVAR | eff ) Boolean
63- tryPutVar avar = liftEff <<< AVar .tryPutVar avar
77+ tryPutVar ∷ ∀ eff a . a → AVar a → Aff (avar ∷ AVAR | eff ) Boolean
78+ tryPutVar value = liftEff <<< AVar .tryPutVar value
6479
6580-- | Reads the AVar value. Unlike `takeVar`, this will not leave the AVar empty.
6681-- | If the AVar is empty, this will queue until it is filled. Multiple reads
@@ -77,5 +92,5 @@ tryReadVar = liftEff <<< AVar.tryReadVar
7792
7893-- | Kills the AVar with an exception. All pending and future actions will
7994-- | resolve immediately with the provided exception.
80- killVar ∷ ∀ eff a . AVar a → Error → Aff (avar ∷ AVAR | eff ) Unit
81- killVar avar = liftEff <<< AVar .killVar avar
95+ killVar ∷ ∀ eff a . Error → AVar a → Aff (avar ∷ AVAR | eff ) Unit
96+ killVar error = liftEff <<< AVar .killVar error
0 commit comments