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