[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: SYMBOL-MACROLET-DECLARE (version 1)
- To: piazza%lisp.DEC@decwrl.dec.com
- Subject: Issue: SYMBOL-MACROLET-DECLARE (version 1)
- From: Patrick Dussud <dussud@lucid.com>
- Date: Tue, 13 Sep 88 11:41:59 PDT
- Cc: Moon@stony-brook.scrc.symbolics.com,        Common-Lisp-Object-System@SAIL.STANFORD.EDU,        cl-cleanup@SAIL.STANFORD.EDU
- In-reply-to: Jeffrey Piazza's message of Tue, 13 Sep 88 07:06:10 PDT <8809131406.AA24481@decwrl.dec.com>
   Date: Tue, 13 Sep 88 07:06:10 PDT
   From: piazza%lisp.DEC@decwrl.dec.com (Jeffrey Piazza)
   This seems like a reasonable proposal and does make SYMBOL-MACROLET more
   consistent with LET.
   This may be a separate issue, but somewhere we should nail down the
   interpretation of e.g.
	   (symbol-macrolet ((foo bar))
	     ...
	     (locally (declare (special foo))
	       ...foo...))
   As currently specified, only a new binding for FOO can turn off its
   interpretation as a symbol macro.  I'd like to see some language that said that
   a SPECIAL declaration also shadows the symbol macro scope.
That seems reasonable.
   The limit case, which your proposal makes "an error", might then reasonably
   have a null semantics:
	   (symbol-macrolet ((foo bar))
	     (declare (special foo))
	     ...)
   might be interpreted as
	   (locally (declare (special foo))
	     ...)
This would be a very bad idea, it would be very inconsistent with LET, and
would introduce a bizarre semantics: Throw away what I just said in the
binding list. I think that it should be an error.
Patrick.