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:

Documentation on exports

PREDICATE

Meta-predicate with arguments: freeze(?,goal).

Usage: freeze(X,Goal)

  • Description: 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

Meta-predicate with arguments: frozen(?,goal).

Usage: frozen(X,Goal)

  • Description: 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.