cut
Previous: cursor
Next: cutbacktrack
6.2.33. cut
cuts of backtracking
SYNOPSIS
INCLUDE 'prolib.h' cut(handle)
SYNTAX
cut(cut_point) (i)
ARGUMENTS
handle(cut_point) (i) Handle associated with set_cut.
DESCRIPTION
Together with set_cut () this predicate
may be used to effect backtracking. Its effect is, that when backtracking takes
place back to the cut() goal, the execution flow takes a short-cut back to the
position where the associated set_cut
() goal was done. Instead of using set_cut
() and cut() you may also use getbacktrack
() and cutbacktrack () to achieve
the same purpose. Getbacktrack()/Cutbacktrack() works faster, on the other hand
you cannot use virtual handles.
NOTE: If you cut back over a set_cut goal, the associated handle is not cleared. You thus might
be able to use it in the wrong place, causing the system to crash. This problem will be fixed
soon.
EXAMPLE
repeat, set_cut(start), for(1,5,X), write(X), X = 3, cut(start), fail.
This will cause the following output:
123123123 ...
ERRORS
A runtime error occurs if the Handle was not initialised by set_cut . Misuse my crash the system.
LAYERS
prolog-process, client-server, object
RELATED PREDICATES
! , set_cut , getbacktrack , cutbacktrack
BAP Online Manuals : Library Reference : Library by Name : cut
Previous: cursor
Next: cutbacktrack