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

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.
Meta-predicate with arguments: freeze(?,goal).

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.
Meta-predicate with arguments: frozen(?,goal).

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.