[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RMS
- To: JONL at MIT-MC
- Subject: RMS
- From: GLS at MIT-MC (Guy L. Steele, Jr.)
- Date: Mon, 19 Jun 78 23:19:00 GMT
- Cc: (BUG LISP) at MIT-MC
- Original-date: 19 JUN 1978 1919-EDT
Date: 17 JUN 1978 1449-EDT
From: JONL at MIT-MC (Jon L White)
Subject: RMS
To: (BUG LISP) at MIT-MC
The poooooor compiler must intercept any flavor of DISPLACE and imitate
it without actually doing the RPLAC's, but rather by copying. The reason
is that ocasionally the complr likes to "back-up", and any munging of the
original code (as read in) would be bad. Even if there are multiple
pointers to a given cell in code, it would not be bad to run the
macro expander twice or more, since the macro-expansion occurs only
once per instance in code (rather than once per use in normal lisp
running enviromnent). Apparently the expansion of macros more than once
(due to the "backing-up") has caused some consternation to some
people, so it is apparently something a compiler user will have to
live with, or else use read-time macros (instead of eval-time macros
which BLAIR calls "meta-composition").
It seems to me that the compiler could back up properly by noticing the
DISPLACED form, if DISPLACE/DISPLACED were institutionalized. On the othher
hand, there are other goood reasons why re-performing a macro shouldn't
cause screewwage.