11.3.192 save_program/[1,2]



save_program(+File, +Goal)

Saves the state of the current execution in object format to File. A goal, Goal, to be called upon execution/restoring of the saved state, may be specified.


file_spec, must be ground

A file specification, `.sav' extension optional.

callable, must be nonvar

A goal, defaults to true.


save_program/[1,2] creates a binary representation of all predicates in all modules existing in the system. However, it does not save the user's pre-linked code. It also saves such states of the system as operator definitions, Prolog flags, debugging and advice state, initializations, and dependencies on foreign resources.

The resulting file can be restored using restore/1.

Any unbound variables in Goal with attributes or blocked goals attached to them will be replaced by plain, brand new variables. This is analogous to the way attributed variables are handled in terms that are written, copied, asserted, gathered as solutions to findall/3 and friends, or raised as exceptions. To retain the attributes, you can use copy_term/3 (see ref-lte-cpt).


File or Goal is not bound.
File is not a valid file specification, or Goal is not a callable.
File is not writable.

See Also

restore/1, ref-sls, ref-sls-sst.

Send feedback on this subject.