Description
Primitives for manipulating the state of the universe.
Description
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