There are several entry points provided for calling Prolog from Lisp. The main interface function is called
logic
and has numerous options. The basic form is:
(logic <goal >
:return-type <return-type >
:all <all-type >
:bag-exp <bag-exp >)
The keyword arguments are interpreted as follows:
:return-type
describes what to do with a solution when one is found. Possible values of
:return-type
are:
Display variable bindings and prompt user (the option used by the
read-query-print
loop).
Instantiate the goal expression and return it.
Instantiate < bag-exp > and return it.
Return an alist of variables and bindings.
:all
tells what to do with multiple solutions. Possible values of
:all
are:
Return the first solution.
Return multiple solutions as multiple values.
Return a list of the solutions.
:bag-exp
is an expression that should be instantiated with the bindings from a solution. This is only meaningful if
:return-type
is
:bag
.