Node:The Prolog Library, Next:, Previous:The SICStus Tools, Up:Top



The Prolog Library

The Prolog library comprises a number of packages which are thought to be useful in a number of applications. Note that the predicates in the Prolog library are not built-in predicates. One has to explicitly load each package to get access to its predicates. The following packages are provided:

arrays
provides an implementation of extendible arrays with logarithmic access time.
assoc
uses AVL trees to implement "association lists", i.e. extendible finite mappings from terms to terms.
atts
provides a means of associating with variables arbitrary attributes, i.e. named properties that can be used as storage locations as well as hooks into Prolog's unification.
heaps
implements binary heaps, the main application of which are priority queues.
lists
provides basic operations on lists.
terms
provides a number of operations on terms.
ordsets
defines operations on sets represented as lists with the elements ordered in Prolog standard order.
queues
defines operations on queues (FIFO stores of information).
random
provides a random number generator.
system
provides access to operating system services.
trees
uses binary trees to represent non-extendible arrays with logarithmic access time. The functionality is very similar to that of library(arrays), but library(trees) is slightly more efficient if the array does not need to be extendible.
ugraphs
provides an implementation of directed and undirected graphs with unlabeled edges.
wgraphs
provides an implementation of directed and undirected graphs where each edge has an integral weight.
sockets
provides an interface to system calls for manipulating sockets.
linda/client
linda/server
provides an implementation of the Linda concept for process communication.
bdb
provides an interface to Berkeley DB, for storage and retrieval of terms on disk files with user-defined multiple indexing.
clpb
provides constraint solving over Booleans.
clpq
clpr
provides constraint solving over Q (Rationals) or R (Reals).
clpfd
provides constraint solving over Finite (Integer) Domains
chr
provides Constraint Handling Rules
fdbg
provides a debugger for finite domain constraint programs
objects
provides the combination of the logic programming and the object-oriented programming paradigms.
tcltk
An interface to the Tcl/Tk language and toolkit.
vbsp
An interface for calling Prolog from Visual Basic.
gauge
is a profiling tool for Prolog programs with a graphical interface based on tcltk.
charsio
defines I/O predicates that read from, or write to, a list of character codes.
jasper
An interface to the Java language.
COM Client
An interface to Microsoft COM automaton objects.
flinkage
is a tool for generating glue code for the Foreign Language Interface when building statically linked runtime systems or development systems. No longer supported but provided for porting really old code.
timeout
provides a way of running goals with an execution time limit.
wcx_example
provides a sample implementation of a Wide Character Extension (WCX) box.

To load a library package Package, you will normally enter a query

     | ?- use_module(library(Package)).
     

A library package normally consists of one or more hidden modules.

An alternative way of loading from the library is using the built-in predicate require/1 (see Read In). The index file INDEX.pl needed by require/1 can be created by the make_index program. This program is loaded as:

     | ?- use_module(library(mkindex)).
     
make_index:make_library_index(+LibraryDirectory)

Creates a file INDEX.pl in LibraryDirectory. All *.pl files in the directory and all its subdirectories are scanned for module/2 declarations. From these declarations, the exported predicates are entered into the index.