module Ouroboros.Consensus.Util.MonadSTM.NormalForm
( module LazySTM
, module Ouroboros.Consensus.Util.MonadSTM.StrictSVar
, module StrictSTM
, newEmptySVar
, newSVar
, uncheckedNewEmptySVar
, uncheckedNewSVar
) where
import Control.Concurrent.Class.MonadSTM.Strict.TMVar as StrictSTM hiding
( newTMVar
, newTMVarIO
, traceTMVar
, traceTMVarIO
)
import Control.Concurrent.Class.MonadSTM.TBQueue as LazySTM
import Control.Concurrent.Class.MonadSTM.TQueue as LazySTM
import Control.Monad.Class.MonadSTM as StrictSTM hiding
( traceTVar
, traceTVarIO
)
import GHC.Stack
import NoThunks.Class (NoThunks (..), unsafeNoThunks)
import Ouroboros.Consensus.Util.MonadSTM.StrictSVar hiding
( newEmptySVar
, newEmptySVarWithInvariant
, newSVar
, newSVarWithInvariant
)
import qualified Ouroboros.Consensus.Util.MonadSTM.StrictSVar as Strict
newSVar ::
(MonadSTM m, HasCallStack, NoThunks a) =>
a -> m (StrictSVar m a)
newSVar :: forall (m :: * -> *) a.
(MonadSTM m, HasCallStack, NoThunks a) =>
a -> m (StrictSVar m a)
newSVar = (a -> Maybe String) -> a -> m (StrictSVar m a)
forall (m :: * -> *) a.
(MonadSTM m, HasCallStack) =>
(a -> Maybe String) -> a -> m (StrictSVar m a)
Strict.newSVarWithInvariant ((ThunkInfo -> String) -> Maybe ThunkInfo -> Maybe String
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ThunkInfo -> String
forall a. Show a => a -> String
show (Maybe ThunkInfo -> Maybe String)
-> (a -> Maybe ThunkInfo) -> a -> Maybe String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe ThunkInfo
forall a. NoThunks a => a -> Maybe ThunkInfo
unsafeNoThunks)
newEmptySVar :: (MonadSTM m, NoThunks a) => a -> m (StrictSVar m a)
newEmptySVar :: forall (m :: * -> *) a.
(MonadSTM m, NoThunks a) =>
a -> m (StrictSVar m a)
newEmptySVar = (a -> Maybe String) -> a -> m (StrictSVar m a)
forall (m :: * -> *) a.
MonadSTM m =>
(a -> Maybe String) -> a -> m (StrictSVar m a)
Strict.newEmptySVarWithInvariant ((ThunkInfo -> String) -> Maybe ThunkInfo -> Maybe String
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ThunkInfo -> String
forall a. Show a => a -> String
show (Maybe ThunkInfo -> Maybe String)
-> (a -> Maybe ThunkInfo) -> a -> Maybe String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Maybe ThunkInfo
forall a. NoThunks a => a -> Maybe ThunkInfo
unsafeNoThunks)
uncheckedNewSVar :: MonadSTM m => a -> m (StrictSVar m a)
uncheckedNewSVar :: forall (m :: * -> *) a. MonadSTM m => a -> m (StrictSVar m a)
uncheckedNewSVar = a -> m (StrictSVar m a)
forall (m :: * -> *) a. MonadSTM m => a -> m (StrictSVar m a)
Strict.newSVar
uncheckedNewEmptySVar :: MonadSTM m => a -> m (StrictSVar m a)
uncheckedNewEmptySVar :: forall (m :: * -> *) a. MonadSTM m => a -> m (StrictSVar m a)
uncheckedNewEmptySVar = a -> m (StrictSVar m a)
forall (m :: * -> *) a. MonadSTM m => a -> m (StrictSVar m a)
Strict.newEmptySVar