Go to the first, previous, next, last section, table of contents.


det_hook_rt (library)

Author(s): José Morales, Manuel Carro.

Version: 1.7#83 (2001/4/2, 14:30:17 CEST)

Offers an enriched variant of call and cut !!/0 which executes pending goals when the computation has no more alternatives. As an example, the program

:- module(_, _, [det_hook]).

enumerate(X):-
        display(enumerating), nl,
	OnCut = (display('goal cut'), nl),
	OnFail = (display('goal failed'), nl),
	det_try(enum(X), OnCut, OnFail).

enum(1).
enum(2).
enum(3).

behaves as follows:

?- enumerate(X).
enumerating

X = 1 ? ;

X = 2 ? ;

X = 3 ? ;
goal failed

(note the message inserted on failure). The execution can be cut as follows:

?- use_package(det_hook).
{Including /home/clip/lib/ciao/ciao-1.7/library/det_hook/det_hook.pl
}

yes
?- enumerate(X), '!!'.
enumerating
goal cut

X = 1 ? ;

no

This library is useful to, for example, get rid of external connections once the necessary data has been obtained.

Usage and interface (det_hook_rt)

Documentation on exports (det_hook_rt)

PREDICATE: det_try/3:

Meta-predicate with arguments: det_try(pred(0),pred(0),pred(0)).

Usage: det_try(Goal,OnCut,OnFail)

Documentation on internals (det_hook_rt)

PREDICATE: !!/0:

Usage:

Known bugs and planned improvements (det_hook_rt)


Go to the first, previous, next, last section, table of contents.