data RealWorld :: *
base Control.Monad.ST, base Control.Monad.ST.Lazy
RealWorld is deeply magical. It is primitive, but it is not unlifted (hence ptrArg). We never manipulate values of type RealWorld; it's only used in the type system, to parameterise State#.
package acme-realworld
GHC represents an IO action internally as a function from one state of the world to the next: > State# RealWorld -> (# State# RealWorld, a #) This module provides a very useful capability stemming directly from this representation: the ability to save the current state of the universe and restore it later.  This provides a way to &quot;undo&quot; certain types of side effects in the IO monad: > import Acme.Missiles > import Acme.RealWorld > main :: IO () > main = do > -- Save the current state of the universe > world_as_we_know_it <- getWorld > -- Cause serious international side effects > launchMissiles > -- After realizing that was a terrible, terrible mistake, restore the > -- pre-war state of the universe. > putWorld world_as_we_know_it Version 0.1.1