Skip to content

Commit 3d3f9e5

Browse files
committed
consensus: add Strict.newTVar
1 parent 57fc6e2 commit 3d3f9e5

File tree

1 file changed

+10
-0
lines changed
  • strict-stm/src/Control/Monad/Class/MonadSTM

1 file changed

+10
-0
lines changed

strict-stm/src/Control/Monad/Class/MonadSTM/Strict.hs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module Control.Monad.Class.MonadSTM.Strict
2323
, fromLazyTVar
2424
, newTVar
2525
, newTVarIO
26+
, newTVarWithInvariant
2627
, newTVarWithInvariantIO
2728
, readTVar
2829
, readTVarIO
@@ -149,6 +150,15 @@ newTVarM :: MonadSTM m => a -> m (StrictTVar m a)
149150
newTVarM = newTVarIO
150151
{-# DEPRECATED newTVarM "Use newTVarIO" #-}
151152

153+
newTVarWithInvariant :: (MonadSTM m, HasCallStack)
154+
=> (a -> Maybe String) -- ^ Invariant (expect 'Nothing')
155+
-> a
156+
-> STM m (StrictTVar m a)
157+
newTVarWithInvariant invariant !a =
158+
checkInvariant (invariant a) $
159+
(\tvar -> mkStrictTVar invariant tvar)
160+
<$> Lazy.newTVar a
161+
152162
newTVarWithInvariantIO :: (MonadSTM m, HasCallStack)
153163
=> (a -> Maybe String) -- ^ Invariant (expect 'Nothing')
154164
-> a

0 commit comments

Comments
 (0)