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

Interaction between flet and macrolet

This might be a problem with the Common Lisp definition:

Is a local macro (defined using macrolet) allowed to use
a local function (defined using flet) in the surrounding
lexical environment?  For example,

(defun x ()
  (flet ((y (n) (1+ n)))
    (macrolet ((z (n) (y n)))
      (z 1))))

Now, cl version 4.0 gives an error (y not defined) when
x is called.  Version 4.1beta returns 2 when (x) is interpreted,
but core dumps when during compilation of x.

Which is the correct behavior?

While I'm at it, when will 4.1 be ready, and will it have
the functions dealing with syntactic environments
(variable-information, augment-environment, etc.)?