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 "undo" 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