acme-realworld

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.

BSD3 licensed by Joey Adams

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
Depends on:
Used by 1 package:
comments powered byDisqus