file_search_path/2 facts are best defined using
the initialization file
, which is
consulted at startup time by the Development System. Therefore, with
reference to the examples from ref-fdi-fsp-def,
clauses like one following should be placed in the
prolog.ini file so
that they are automatically available to user programs after startup:
:- multifile file_search_path/2. :- dynamic file_search_path/2. file_search_path(home, '/usr/jackson'). file_search_path(qp_directory, home('prolog/qp')). file_search_path(demo, 'etc/demo').
If it is necessary to avoid multiple definitions of the same fact,
this would be useful, for example, when restoring a saved state saved
save_program/1 at which time the
prolog.ini file is consulted
again, a predicate such as
add_my_search_path/2 can be defined in
add_my_search_path(Name, FileSpec) :- file_search_path(Name, FileSpec), !. add_my_search_path(Name, FileSpec) :- assert(file_search_path(Name, FileSpec)).
This predicate only asserts a clause into the database if it is not already defined. Then, using goals of the following form avoids multiple definitions:
:- add_my_search_path(home, '/usr/jackson'). :- add_my_search_path(demo, 'etc/demo'). :- add_my_search_path(qp_directory, home('prolog/qp')).