[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: issue SHARP-COMMA-CONFUSION
- To: sandra%defun@cs.utah.edu (Sandra J Loosemore)
- Subject: Re: issue SHARP-COMMA-CONFUSION
- From: masinter.pa@Xerox.COM
- Date: 12 Jan 89 11:15 PST
- Cc: masinter.pa@Xerox.COM, Jon L White <jonl@lucid.com>, cl-compiler@sail.stanford.edu
- In-reply-to: sandra%defun@cs.utah.edu (Sandra J Loosemore)'s message of Thu, 12 Jan 89 09:10:43 MST
We could make uses of #, outside of backquote "undefined", or add some more
rules for how to interpret #, in those situations.
The question is: which is better, remove backquote from the standard, or
leave it in in restricted form?
:REMOVE is incompatible with all uses of #,
:RESTRICT is incompatible with all uses outside of backquote.
So RESTRICT is "less" incompatible: it will cause fewer of the programs
that use #, to no longer be admissible.
Re: "it doesn't really buy you any functionality". Neither does "quote" or
"backquote" for that matter. Read-macro syntax is merely a more readable
shorthand. (Your example should have been ,(load-time-eval form) instead of
(load-time-eval ,form).)
I don't like the reasoning which I paraphrase "if we take this out instead
of define it, implementations can retain their existing definitions as an
extension."
The major problem with the proposal I outlined about backquote is that it
CONSes. I.e., if I say
'(a b #,foo) it should not cons a new list, but if I say
`(a b #,foo) with the definition I proposed, it would.
In fact, '(a b #,foo) should turn itself into
(load-time-constant (list 'a 'b foo)).