function bind( x:alfa; val:Value; r:Env ):Env; { :Ide -> Value -> Env -> Env }
   var p:Env;
begin new(p); envcells:=envcells+1;
      with p^ do begin id:=x; v:=val; next:=r end;
      bind:=p
end {bind};

function applyenv( r:Env; x:alfa ):Value;      { :Env -> Ide -> Value }
begin LastId := x; {debugging}
      if r=nil then error('undec id  ')
      else if r^.id=x then
      begin force( r^.v );   {only called from eval}
            applyenv := r^.v
      end
      else applyenv := applyenv( r^.next, x )
end {applyenv};

{\fB Build and Search Environment. \fP}
