atomically

atomically :: STM a -> IO a
base GHC.Conc.Sync, base GHC.Conc, stm Control.Monad.STM
Perform a series of STM actions atomically. You cannot use atomically inside an unsafePerformIO or unsafeInterleaveIO. Any attempt to do so will result in a runtime error. (Reason: allowing this would effectively allow a transaction inside a transaction, depending on exactly when the thunk is evaluated.) However, see newTVarIO, which can be called inside unsafePerformIO, and which allows top-level TVars to be allocated.
NestedAtomically :: Exception
base Control.OldException
The runtime detected an attempt to nest one STM transaction inside another one, presumably due to the use of unsafePeformIO with atomically.
NestedAtomically :: NestedAtomically
base Control.Exception.Base, base Control.Exception
data NestedAtomically
base Control.Exception.Base, base Control.Exception
Thrown when the program attempts to call atomically, from the stm package, inside another call to atomically.
nestedAtomically :: SomeException
base Control.Exception.Base
oFFSET_StgAtomicallyFrame_code :: Int
base GHC.Constants
oFFSET_StgAtomicallyFrame_next_invariant_to_check :: Int
base GHC.Constants
oFFSET_StgAtomicallyFrame_result :: Int
base GHC.Constants
sIZEOF_StgAtomicallyFrame_NoHdr :: Int
base GHC.Constants