[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue MACRO-FUNCTION-ENVIRONMENT, Version 1
- To: IIM@ECLA.USC.EDU
- Subject: Issue MACRO-FUNCTION-ENVIRONMENT, Version 1
- From: Eric Benson <eb@lucid.com>
- Date: Tue, 3 Jan 89 08:10:38 pst
- Cc: cl-cleanup@SAIL.STANFORD.EDU, iim@ECLA.USC.EDU
- In-reply-to: Kim A. Barrett's message of Mon 2 Jan 89 17:31:11-PST <12459458774.4.IIM@ECLA.USC.EDU>
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.