- Documentation
- Reference manual
- Overview
- Getting started quickly
- The user's initialisation file
- Initialisation files and goals
- Command line options
- GNU Emacs Interface
- Online Help
- Command line history
- Reuse of top-level bindings
- Overview of the Debugger
- Compilation
- Environment Control (Prolog flags)
- An overview of hook predicates
- Automatic loading of libraries
- Packs: community add-ons
- Garbage Collection
- The SWI-Prolog syntax
- Rational trees (cyclic terms)
- Just-in-time clause indexing
- Wide character support
- System limits
- SWI-Prolog and 64-bit machines
- Overview
- Packages
- Reference manual
2.14 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:user:file_search_path(pack, app_data(pack)). user:file_search_path(pack, swi(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
). Usingfirst
, 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 arekeep
, which is likewarning
but operates silently andreplace
, 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.