type Env = ^ Binding;

     Value = ^ValNode;

     Binding = record id :alfa; v:Value; next:Env end;

     ValueClass = (intval, boolval, charval, emptyval,
                   listval, nilval, funcval, deferval,
                   inprocessval, outprocessval,           {c?x->..., c!e->...}
                   choiceprocessval, paraprocessval,      {...|...,  ...||...}
                   stopprocessval, channelval);

     Values = set of ValueClass;

     ValNode = record case tag :ValueClass of
               choiceprocessval, paraprocessval: (p1, p2 :Value);   {.|., .||.}
               inprocessval, outprocessval:
                  (chnl :Value; msg, cont:tree; pr:Env);   {c?x->..., c!e->...}
               channelval,                                               {chan}
               intval: (n :integer );
               boolval:(b :boolean );
               charval:(ch:char );
               stopprocessval, nilval, emptyval:();
               listval:(hd, tl :Value);
               funcval, deferval:( e:tree; r:Env )
               end;

{\fB Environment and Value Types. \fP}
