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

Re: lexical list



    
    From: Dan Friedman <dfried@iuvax.cs.indiana.edu>
    Subject: lexical list
    Date: Mon, 19 Mar 90 16:42:45 -0500
    
    if `(,+) expands to (list +), does
    (let ((list (lambda args (write "hello"))))
      `(,+))
    also write "hello"?
    Is this a bug or a feature?
    .. Dan

Since `(,+) is, more-or-less, required to read as (quasiquote ((unquote
+))), the real question is whether or not the expansion of the
QUASIQUOTE macro should leave LIST free in its expansion.  I believe
that it should not and, further, that the various proposals being
discussed by the macros subcommittee would handle this just fine,
allowing the expansion to use LIST without getting that reference
captured.

A more interesting question, to my mind, is the value of the following
expression:

	(let ((quote car))
	  '(a b))

I believe that the value of this expression should be the list (A B),
whereas the value of the expression

	(let ((quote car))
	  (quote (a b)))

should (clearly?) be the symbol A.  That is, in the language of the
now-passe syntactic closures proposal, the syntax '<datum> should be
parsed by the language processor as a syntactic closure of the
expression (quote <datum>) in the initial syntactic environment.

Of course, a similar story should hold for the expression `<datum>. 
There is room for disagreement about the "," and ",@" constructions,
depending upon your view of auxiliary syntactic keywords, like ELSE and
=>.

Once one says that this is true, though, there remains the question of
what the READ procedure does with such constructions.  Recall that
language processors need not use READ for their scanning and parsing...

	Pavel