A load-expression has the form:
load identifier expressionThe identifier is the identifier of a module; that is, the type name declared in a
module declaration. The expression following load has type string and names a file containing the compiled form of the module. The load expression yields a handle for referring to the functions and objects provided by a module and its abstract data types.
Execution of load brings the file containing the module into local memory and dynamically type-checks its interface: the run-time system ascertains that the functions, data, constants, and types exported by the module are compatible with the module declaration visible in the scope of the load operator (see Type Equality and Compatibility). In the scope of a module declaration, the types and constants exported by the module can be referred to without a handle, but the functions and data exported by the module (directly at its top level, or within its adt) can be referenced only using a valid handle acquired by the load operator.
The value of load is nil if the attempt to load fails, either because the file containing the module can not be found, or because the found module does not export the specified interface.
Each evaluation of load creates a separate instance of the specified module; it does not share data with any other instance.