[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: issue MACRO-ENVIRONMENT-EXTENT, version 2
- To: sandra%defun@cs.utah.edu (Sandra J Loosemore)
 
- Subject: Re: issue MACRO-ENVIRONMENT-EXTENT, version 2
 
- From: David N Gray <Gray@DSG.csc.ti.com>
 
- Date: Mon, 13 Mar 89  12:13:13 CST
 
- Cc: David N Gray <Gray@DSG.csc.ti.com>, cl-compiler@sail.stanford.edu,        "David A. Moon" <Moon@STONY-BROOK.SCRC.Symbolics.COM>,        "Kim A. Barrett" <IIM%ECLA@ECLC.USC.EDU>,        KMP@STONY-BROOK.SCRC.Symbolics.COM
 
- In-reply-to: Msg of Sat, 11 Mar 89 16:29:06 MST from sandra%defun@cs.utah.edu (Sandra J Loosemore)
 
- Sender: GRAY@Kelvin.csc.ti.com
 
> How about some wording like:
> 
>   The extent of the environment objects passed to MACROEXPAND or
>   MACROEXPAND-1 by COMPILE-FILE, COMPILE, and EVAL is the dynamic extent
>   during which the macro and its expansion are processed.  In
>   particular, the extent includes the expansion of any other macro calls
>   appearing lexically within the form returned from MACROEXPAND or
>   MACROEXPAND-1.
That would be fine.
> I think this would fit in with issue SYNTACTIC-ENVIRONMENT-ACCESS, but
> I'm still confused about why you would still need COPY-ENVIRONMENT.
COPY-ENVIRONMENT would only be needed if there are implementations using
stack list environments that disappear as soon as the macro expander
returns.  Kent, does Symbolics need this?
> One other thing that's still not really clear to me is why you think
> this is better than just saying they have (or can be copied to have)
> indefinite extent.  It would make the typed-variable example work but
> not be of much use for macro-caching.  Can you provide a more specific
> rationale than just saying that it gives implementors more flexibility?
I want to be able to do something like this:
(defun VARIABLE-KIND (variable &optional environment)
  (if (compiler:compilation-environment-p environment)
      (case (compiler:var-type (compiler:lookup-var variable compiler:vars))
	...)
    ;; else handle interpreter environment
    ...))
where the attributes of the variable are actually found in special
variable compiler:vars instead of in the environment object.  This would
permit implementing proposal SYNTACTIC-ENVIRONMENT-ACCESS without
needing to redesign the compiler's data structures.