% $Id: MakeDFV.oz,v 1.1 2009/12/03 16:03:28 leavens Exp leavens $ \insert 'NewPortObject.oz' declare % ::= undetermined() | determined() % ::= unifyWith() | getValue() | isdet() fun {MakeDFV} {NewPortObject undetermined(_) fun {$ State Msg} case State#Msg of %% unifyWith messages undetermined(X)#unifyWith(Val) then X=Val determined(X) %% getValue messages [] determined(V)#getValue(?Z) then Z = V determined(V) [] undetermined(X)#getValue(?Z) then Z = X undetermined(X) %% isdet messages [] undetermined(X)#isdet(?B) then B=false undetermined(X) [] determined(V)#isdet(?B) then B=true determined(V) end end } end