File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed
strict-stm/src/Control/Monad/Class/MonadSTM Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ module Control.Monad.Class.MonadSTM.Strict
23
23
, fromLazyTVar
24
24
, newTVar
25
25
, newTVarIO
26
+ , newTVarWithInvariant
26
27
, newTVarWithInvariantIO
27
28
, readTVar
28
29
, readTVarIO
@@ -149,6 +150,15 @@ newTVarM :: MonadSTM m => a -> m (StrictTVar m a)
149
150
newTVarM = newTVarIO
150
151
{-# DEPRECATED newTVarM "Use newTVarIO" #-}
151
152
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
+
152
162
newTVarWithInvariantIO :: (MonadSTM m , HasCallStack )
153
163
=> (a -> Maybe String ) -- ^ Invariant (expect 'Nothing')
154
164
-> a
You can’t perform that action at this time.
0 commit comments