procedure ShowValue( v:Value );
begin with v^ do 
      case tag of
      intval:  write( n:1 );
      boolval: write( b );
      charval: write( ch );
      emptyval:write( '()' );
      nilval:  write('nil');
      listval: begin write('('); ShowValue(hd); writeln('::'); {flush buffer}
                     ShowValue(tl); write(')')
               end;
      funcval: write('function');
      inprocessval, outprocessval,
      choiceprocessval, paraprocessval: write('process');
      stopprocessval: write('stop');
      channelval: write('chan', n:1);
      deferval:begin force(v); ShowValue(v) end { evaluation is o/p driven }
      end
end {ShowValue};

{\fB Output Values. \fP}
