@hackage / acme-realworld

Primitives for manipulating the state of the universe

Latest0.1.1

About

Metadata

  • Last updated , by JoeyAdams
  • License BSD-3-Clause
  • Maintained by: joeyadams3.14159@gmail.com

  • Lottery factor: 0

Links

Installation

Readme

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