PublicShow sourcemake.pl -- Reload modified source files

This module provides the SWI-Prolog `make' facility that synchronises Prolog internal database after loaded files have been edited.

bug
- Dependency tracking is incomplete. Notably, there is no dependency tracking if compilation of one module depends on goal_expansion/2 or term_expansion/2 rules provided by another.
Sourcemake
Reload all source files that have been changed since they were loaded. This predicate peforms the following steps:
  1. Compute the set of files that need to be reloaded.
  2. Call the hook prolog:make_hook(before, Files)
  3. Reload the files
  4. Call the hook prolog:make_hook(after, Files)
  5. If (4) fails, call list_undefined/0.

The hooks are called with an empty list if no files need reloading.

prolog:make_hook(+When, +Files) is semidet[multifile]
This hook is called by make/0. It is called with the following values for When:
before
The hook is called before reloading starts. The default action is to do nothing.
after
The hook is called after reloading completed. The default action is to call list_undefined/1 as:
list_undefined([scan(local)]).

The hook can be used to change program validation, stop or restart services, etc.

Arguments:
Files- is a list holding the canonical file names of the files that need to be reloaded. This list can be empty.