[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Your recent note on MacLisp errors
- To: TONYH at MIT-AI
- Subject: Your recent note on MacLisp errors
- From: JONL at PARC-MAXC
- Date: Sat, 30 Oct 82 00:00:00 GMT
- Cc: BUG-LISP at MIT-MC
- Original-date: 29 OCT 1982 1700-PDT
Your questions (1) and (2) arise from misunderstanding how and
when macros are applied (both readmacros and interpreter/compiler
macros).
1) Macros are never "called" in the sense that we think of calling
a funciton -- they are "expanded" by the interpreter and compiler,
but of course if they are not available to the compiler when compiling
some file, then no expansion can be done, and the compiler will defaultly
assume that the unknown name stands for a function call (rather than for
some macro to be expanded).
2) when READing a file, the s-expressions are stored as ascii text, and
the readmacro characters are invoked when such character is encountered
by the READer; FASL files, on the contrary, store either the
compiled versions of programs, or a special internal-format for other
s-exressions. Perhaps a reasonable approach is for the tilde macro
merely to append to some global list, which is then output near the end of
your file. Thus both ascii files being READ and compile dFASL files would
have a consistent representation of what is wanted in the HELP system (namely,
the list of goodies which was produced by READing the ffile in the first place).
As for deletion of the echo, it will depend on what kind of system you are using
TOPS10 or TOPS20. If the latter, you can turn of echoing by an appropriate STATUS
call which sets the bits in the TOPS20 echocontrol words; There may be some explanation
of this (i.e., the extended STATUS calls for TOPS20) in the note which I used to
attach to the distributed MacLisp tapes.
As for the GCDAEMON reported errors, it sounds like you have a copy of the STRING
package from early to mid 1980. Many bugs in it were fixed in late 1980 and
very early 1981, so these problems should go away if you can get the current
distribution (which was supposed to have taken place just as I was leaving MIT
in mid March of this year.)
More hints on problems (1) and (2)
Thus usual procedure for using "compiled" macros is to seperate them out
into a file by themselves, and have them loaded into the compiler each time
you compile some file which might use some of them. Admittedly this is not quite
as nice as defining the macros where they might "naturally" occur, but . . .
Suppose you have your tilede macro collect some data into TILDELIST. Then at the
end of the file you could put a form
(SETQ DATASTUFF '#.TILDELIST)
this wouold be one way of insureing that DATASTUFF would have the save value after
loading the FASL file as when loading thee source file.