DOC: add documentation for library(freeze) in DocLog format

This commit is contained in:
Markus Triska
2023-01-25 23:54:30 +01:00
parent 058cbcf19a
commit a8ea2b0f97

View File

@@ -1,5 +1,8 @@
:- module(freeze, [freeze/2]). :- module(freeze, [freeze/2]).
/** Provides the constraint `freeze/2`.
*/
:- use_module(library(atts)). :- use_module(library(atts)).
:- use_module(library(dcgs)). :- use_module(library(dcgs)).
@@ -19,6 +22,15 @@ verify_attributes(Var, Other, Goals) :-
). ).
verify_attributes(_, _, []). verify_attributes(_, _, []).
%% freeze(Var, Goal)
%
% Schedules Goal to be executed when Var is instantiated. This can
% be useful to observe the exact moment a variable becomes bound to a
% more concrete term, for example when creating animations of search
% processes. Higher-level constructs such as `phrase_from_file/2` can
% also be implemented with `freeze/2`, by scheduling a goal that
% reads additional data from a file as soon as it is needed.
freeze(X, Goal) :- freeze(X, Goal) :-
put_atts(Fresh, frozen(Goal)), put_atts(Fresh, frozen(Goal)),
Fresh = X. Fresh = X.