(* $Id: Registry.sig,v 1.2 1998/08/13 11:35:07 pxs Exp $ *) (* In a few cases we want (possibly as-yet-unknown) components to be able *) (* to specify what should happen under common circs like user wants to *) (* save whole environment, start with a blank sheet, etc. The Registry *) (* keeps track of what should be done and controls the doing of it. The *) (* string arguments are for debugging purposes, and should describe the *) (* action of the function being registered. *) signature REGISTRY = sig (* Very simple setup to allow modules to have "critical sections" without *) (* having to handle them themselves. *) val resetTables : unit -> unit val registerTableResetter : (string * (unit -> unit)) -> unit (* Printing bindings of things: *) val registerPrinter : (string * (unit -> unit)) -> unit (* Forgetting bindings of things: *) val registerForgetter : (string * (unit -> unit)) -> unit end