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'); end end {ShowValue}; {\fB Output Values. \fP}