[Openmcl-devel] process-run-function and "dynamic vs lexical"

Bill St. Clair billstclair at gmail.com
Thu Oct 22 12:40:58 PDT 2009


On Thu, Oct 22, 2009 at 3:27 PM, Taoufik Dachraoui
<taoufik.dachraoui at wanadoo.fr> wrote:
> Ok let me be more methodic...

> Dynamic variables sould not be pervasive (unwelcome) but should be
> used with some
> confidence by all programmer and not only experts should use them; For
> this they need
> to be easy to understand and intuitive (no surprises only when there
> is an obvious error
> in the program).

Whether or not it's a good idea, special variable proclamations are
pervasive in Common Lisp. So once you evaluate (DEFVAR X) in your
environment, the compiler will treat all subsequent bindings of X as
dynamic. That's how Common Lisp is defined. That's how every
implementation I've used works. Hence the strong suggestion to name
your global variables so that it's obvious that they're special (*X*
or +X+, not X). There's no way to tell by looking at a code fragment
which variables will be dynamically bound. That depends on which
variables are declared special in the compilation environment. You may
not like it, but if you're programming in Common Lisp, that's just how
it is.

-Bill



More information about the Openmcl-devel mailing list