Frequently used file_search_path/2 facts are best defined using
the initialization file prolog.ini
, 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
by 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
the prolog.ini file.
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')).