Delaying predicates (freeze)
Author(s): Remy Haemmerle, Manuel Carro, Daniel Cabeza.
This library offers a simple implementation of freeze/2, frozen/2, etc. [Col82,Nai85,Nai91,Car87] based on the use of attributed variables [Hol92,Hol90].
Usage and interface
- Library usage:
:- use_module(library(freeze)). - Exports:
- Imports:
- Packages:
prelude, nonpure, assertions, nortchecks.
- Packages:
Documentation on exports
PREDICATE
Usage:freeze(X,Goal)
If X is free delay Goal until X is non-variable.
- The following properties should hold at call time:
(basic_props:callable/1)Goal is a term which represents a goal, i.e., an atom or a structure.
PREDICATE
Usage:frozen(X,Goal)
Goal is currently delayed until variable X becomes bound.
- The following properties should hold upon exit:
(basic_props:callable/1)Goal is a term which represents a goal, i.e., an atom or a structure.
Known bugs and planned improvements
- Run-time checks have been reported not to work with this code. That means that either the assertions here, or the code that implements the run-time checks are erroneous.