MLton MLTONWIKIVERSION

MLtonWorld

Home Index

    signature MLTON_WORLD =
       sig
          datatype status = Clone | Original

          val load: string -> 'a
          val save: string -> status
          val saveThread: string * Thread.Runnable.t -> unit
       end

- `datatype status`
  specifies whether a world is original or restarted (a clone).

- `load f`
  loads the saved computation from file `f`.

- `save f`
  saves the entire state of the computation to the file `f`. The computation can then be restarted at a later time using `World.load` or the `load-world` runtime option. The call to `save` in the original computation returns `Original` and the call in the restarted world returns `Clone`.

- `saveThread (f, rt)`
  saves the entire state of the computation to the file `f` that will resume with thread `rt` upon restart.

## Example

Suppose that `save-world.sml` contains the following.

    open MLton.World
    val _ =
       case save "world" of
          Original => print "I am the original\n"
        | Clone => print "I am the clone\n"

Then, if we compile `save-world.sml` and run it, the `Original` branch will execute, and a file named `world` will be created.

    % mlton save-world.sml
    % save-world
    I am the original

We can then load `world` using the `load-world` run time option.

    % save-world @MLton load-world world --
    I am the clone

Last edited on 2007-08-23 03:46:03 by MatthewFluet.