> -----Original Message-----
> From: Michel Van den Bergh [mailto:michel.vandenbergh at uhasselt.be]
> Sent: Monday, January 01, 2007 10:42 AM
> robust.
>
> Basically the interpreter should internally replace
> parameters and local
> variables by unique
> symbols. This is what any language I know of does.
How many of those languages have "eval"?
Usually parameters are not replaced by unique symbols, but by positions on
a stack.
That is, parameter x is changed to "location 4 from stack-pointer".
But then if parameter x has value y, you must translate that to some other
location on the stack if you are allowed to do "eval". This never happens
in Fortran, C, Java,...
It happens in (old-fashioned) Lisp, Scheme, and Common Lisp. The responses
depend respectively on the nature of bindings, being, in the three cases,
(dynamic binding unless compiled, then lexical), (lexical), (lexical unless
declared "special").
There may be evals in some other languages (like Tcl, I think. Maybe Perl,
or jscript) which may use only global environments. This doesn't solve your
problem.
RJF