Of course, there's nothing to stop you sticking any old integer as a frame or choice point - but if you do that then some really weird things can start to happen.
Did you know ... | Search Documentation: |
Examining the Environment Stack |
true
if Frame
still is a candidate for backtracking; false
otherwise.<module>:<goal>
.
Do not instantiate variables in this goal unless you know what
you are doing! Note that the returned term may contain references to the
frame and should be discarded before the frame terminates.252The
returned term is actually an illegal Prolog term that may hold
references from the global to the local stack to preserve the variable
names.
The variant parent_goal(-Parent)
unifies the frame
reference of the parent of the found frame with Parent. That
allows for finding frames higher up in the stack running the same goal.
goal
, but only returning the [<module>:]<name>/<arity>
term describing the term, not the actual arguments. It avoids creating
an illegal term as goal
and is used by the library library(prolog_stack)
.true
if Frame
is the top Prolog goal from a recursive call back from the foreign
language; false
otherwise.true
if the frame is
hidden from the user, either because a parent has the hide-childs
attribute (all system predicates), or the system has no trace-me
attribute.true
if this frame was skipped in the
debugger.clause
(the goal has
alternative clauses), foreign
(non-deterministic foreign
predicate), jump
(clause internal choice point), top
(first dummy choice point), catch
(catch/3
to allow for undo),
debug
(help the debugger), or none
(has been
deleted).clause
.This predicate is used for the graphical debugger to show the choice point stack.
true
if no choice point exists
that is more recent than the entry of the clause in which it appears.
There are few realistic situations for using this predicate. It is used
by the
prolog/0
top level to check whether Prolog should prompt the user for
alternatives. Similar results can be achieved in a more portable fashion
using call_cleanup/2.