@hackage acme-realworld0.1.1

Primitives for manipulating the state of the universe

  • Categories

    • License

      BSD-3-Clause

    • Maintainer

      joeyadams3.14159@gmail.com

    • Versions

      • 0.1.1 Fri, 9 Dec 2011
      • 0.1 Fri, 9 Dec 2011

    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