- ...ProcClause3.1
- It should be remembered that because of the
definition of the syntax of a term, to assert a procedure of the form p
:- q,r it is necessary to enclose it in parentheses:
assert((p:-q,r)).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... variable4.1
-
The display matrix tools is similar to the variable display of Grace.
The main differences are:
it can display all attributes, not just the finite domain attribute;
it only allows observation of the attributes, but cannot change the
attribute or the labelling strategy
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it5.1
-
in case you don't use modules this is the module eclipse
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... place7.1
- An example of using this feature
is the library ifdef.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it7.2
-
This is in fact ambiguous; the system predicate compiled_stream/1
which is exported from the module sepia_kernel
is more precise.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... files7.3
- This style is not recommended.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... predicate7.4
- The standard approach
is to index only on the first argument
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
alternative8.1
- this is controlled by an automatic scheduler.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... underscore10.1
-
When the library rationals is loaded, rationals are printed
and accepted in the more familiar form of e.g. 1/3.
For compatibility reasons, this syntax is not the default one.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...float_precision10.2
-
Since single and double floats do not unify, the float_precision
flag should not be switched during execution to avoid confusing behaviour.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... builtins10.3
- Note that this optimisation is only done
in :- nodbgcomp mode
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it11.1
-
Though this feature could be used to make a copy of a term with new variables,
it is cleaner and more efficient to use copy_term/2 for that purpose
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
results11.2
- A similar problem can occur when the counter is used
by an interrupt handler
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
goal13.1
- type(goal) stands for suspensions.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... global13.2
-
So that the user can redefine it with a local one.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... discarded14.1
-
This is necessary because the compiler recognises simple
predicates as deterministic at compile time and so if a
simple predicate would cause the invocation of a non-deterministic
error handler, the generated code may no longer be correct.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... independent14.2
-
Note that since the interrupt handler has only one optional argument
which is a number, it cannot bind any variables in the current resolvent.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
predicate15.1
- provided the call has been compiled in debug_compile mode,
or the call is a meta-call
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... inspected15.2
- In ECLiPSe 4.0, this was implemented
as a submode (invoked with two key strokes - Hi). It is now fully
integrated into the debugger
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... attributes.16.1
- We use both metaterm and attributed variable
to denote the same data structure. The latter is more appropriate, but for
the reasons of backward compatibility we sometimes use the former.
The name ``metaterm'' originates from its application in meta-programming:
for an object-level program, a metaterm looks like a variable;
but the meta-program accesses the metaterm's attribute and can store
meta-level information in it.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... e.g.:16.2
- The attribute suspend is always present and defined
by system coroutining.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...inst
17.1
- We use the syntax provided by lib(structures):
inst of suspend stands for a small integer indicating the
number of the argument slot within the attribute structure.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... begins17.2
- This mechanism may be reconsidered in a future release
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... structure17.3
- We use the syntax provided by lib(structures).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... delayed17.4
-
This is sometimes referred to as floundering.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... needed19.1
- provided that the underlying
operating system supports this
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... visible21.1
- The packet boundaries are not of much
interest in Prolog because every Prolog term represents itself
a message with clear boundaries.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... tool22.1
- The profiler requires a small amount of
hardware/compiler dependent code and may therefore not be available on
all platforms.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.