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

Issue MACRO-FUNCTION-ENVIRONMENT, Version 1



   Date: Mon 2 Jan 89 17:31:11-PST
   From: Kim A. Barrett <IIM@ECLA.USC.EDU>

   Proposal (MACRO-FUNCTION-ENVIRONMENT:NEW-ARGUMENT)

    Extend MACRO-FUNCTION to accept an optional second argument.  This argument
    should be either NIL, the &environment argument received by a macro expander
    function, or the environment argument received by an *evalhook* or *applyhook*
    function.  This argument is used to distinguish between compile-time and
    run-time environments. 

MACRO-FUNCTION should not accept the environment argument received by
an *EVALHOOK* or *APPLYHOOK* function.  (*APPLYHOOK* should not even
receive an environment argument, was there ever a cleanup issue
addressing this?)  MACRO-FUNCTION is only concerned with what I have
referred to as "syntactic" environments.  *EVALHOOK* environments are
a different beast entirely, they don't belong in the same category.
In fact, the status of EVALHOOK is tenuous at best.  How is it
done in a compiled-only implementation?

    This proposal explicitly does not modify MACRO-FUNCTION to examine the
    environment argument for local definitions.  MACRO-FUNCTION only returns
    a symbol's global macro definition (if present).

In that case, what does MACRO-FUNCTION return when there is a MACROLET
definition visible?  It must return some non-NIL value.  It should be
the expansion function, to be consistent with the global case.