Primitives for manipulating the state of the universe
|Latest on Hackage:||0.1.1|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
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