{-# LANGUAGE MagicHash #-}

module Effectful.Concurrent.STM.Utils
  ( evaluateSTM,
  )
where

import GHC.Conc (STM (STM))
import GHC.Exts (seq#)

-- | Like 'Control.Exception.evaluate', but for 'STM'.
--
-- @since 0.1
evaluateSTM :: a -> STM a
evaluateSTM :: forall a. a -> STM a
evaluateSTM a
a = (State# RealWorld -> (# State# RealWorld, a #)) -> STM a
forall a. (State# RealWorld -> (# State# RealWorld, a #)) -> STM a
STM ((State# RealWorld -> (# State# RealWorld, a #)) -> STM a)
-> (State# RealWorld -> (# State# RealWorld, a #)) -> STM a
forall a b. (a -> b) -> a -> b
$ \State# RealWorld
s -> a -> State# RealWorld -> (# State# RealWorld, a #)
forall a s. a -> State# s -> (# State# s, a #)
seq# a
a State# RealWorld
s