Partial values.



%%%% Partial values: values who elements are unbound,
%%%% and may be bound later

declare
X %% unbound at this point
Y %% unbound at this point
Ann = person(name: 'Ann' age: X gpa: Y)

{Browse Ann}
%%% field selector:
{Browse Ann.name}

%%% We can provide the name later
%declare
thread {Delay 6000} X = 20 Ann.gpa = 3.4 end

%%% Note that = makes two identifiers refer to the same variable,
%%% so setting one sets the other:
{Browse Y}

%%% Procedures can also be partial values:
declare
Z
proc {Add U}
   Z = U + X
end

{Browse Add}

%%% The procedure will be called once X is bound:
{Add 5}
{Browse Z}

CSci 4651 course web site.