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

PREDICATEfreeze/2

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).

PREDICATEfrozen/2

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).

Documentation on imports

This module has the following direct dependencies: