[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: translators and scoping rules (was: Re: language translator help)

From: Per Bothner
Subject: Re: translators and scoping rules (was: Re: language translator help)
Date: Sun, 28 Apr 2002 08:26:45 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc1) Gecko/20020417

John W. Eaton wrote:
On 28-Apr-2002, Marius Vollmer <address@hidden> wrote:

| "John W. Eaton" <address@hidden> writes:
| | > How would you use eval to introduce a new local variable? | | You can't. If Octave needs this feature (but why?),

Good question.  I can't think of a really legitimate use, but it is
possible to do this in Octave/Matlab, so I was wondering whether it
could be emulated directly in Scheme.

Am I right in guesing that Octave uses dynamic scoping, rather than
lexical scoping?  Certainly any local variable introduced by an eval
cannot be lexically scoped.  However, it can be a dynamic or "fluid"
variable.  So it would be consistent if all local variables were
fluid variables.  (Common Lisp uses the term "special" variables.)

In a single-threaded environment it is easy implement dynamic/fluid
variables:  When the variable is defined, you set the variable in
the global environment, but remember its previous value, if even.
When you exit the variable's scope, you restore the previous value.

It is harder to implement fluid variables in a multi-threaded
environment, but there are various ways you can do it.  (Kawa does
support fluid bindings.)
        --Per Bothner

reply via email to

[Prev in Thread] Current Thread [Next in Thread]