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

Quick question about lexically scoped defun...



Following the discussion in comp.lang.lisp and interested in playing with
what X3J13 is likely to define as legal...

If I do:

(let ((foo 0))
  (defun FOO+ ()
    (INCF FOO))

  (DEFUN FOO? ()
    FOO))

and compile it in the editor, it warns me about the non-null lexical env.
and do I really want to do this?

using the file compiler I just get warnings about DEFUN not at top level.

In both cases, the global definitions of foo? and foo+ work exactly as you
would expect: they understand that FOO is a reference to the lexical
environment. This is a feature I'd like to take advantage of in my
day-to-day programming.

The question is: Since this REALLY IS what I want to be able to do, can I
turn this sort of warning off, i.e. for the file, a system, or for my entire
environment? I couldn't find any appropriate references in the document
examiner, and from glancing at the definition of
Enclose-Top-Level-Environment it looked like a change would be non-trivial.
I'm hoping there's actually a switch somewhere I don't know about.

Thanks...
----
Brad Miller		U. Rochester Comp Sci Dept.
miller@cs.rochester.edu {...allegra!rochester!miller}