2.15 Packs: community add-ons

SWI-Prolog has a mechanism for easy incorporation of community extensions. See the pack landing page for details and available packs. This section documents the built-in predicates to attach packs. Predicates for creating, registering and installing packs are provided by the library library(prolog_pack).

attach_packs
Attaches all packs in subdirectories of directories that are accessible through the file search path (see absolute_file_name/3) pack. The default for this search path is given below. See file_search_path/2 for the app_data search path.
user:file_search_path(pack, app_data(pack)).

The predicate attach_packs/0 is called on startup of SWI-Prolog.

attach_packs(+Directory)
Attach all packs in subdirectories of Directory. Same as attach_packs(Directory,[]).
attach_packs(+Directory, +Options)
Attach all packs in subdirectories of Directory. Options is one of:
search(+Where)
Determines the order in which pack library directories are searched. Default is to add new packages at the end (last). Using first, new packages are added at the start.
duplicate(+Action)
Determines what happens if a pack with the same name is already attached. Default is warning, which prints a warning and ignores the new pack. Other options are keep, which is like warning but operates silently and replace, which detaches the old pack and attaches the new.

The predicate attach_packs/2 can be used to attach packages that are bundled with an application.