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

Replies to ` query

Soon there will be a new BACKQ package for maclisp, which willl
have the option of generating "macroified" code, with the name
|`-expander/|| as a primary eval-time macro.  This option will
be exercised if BACKQUOTE-EXPAND-WHEN is "EVAL" (or in general
anything except "READ), and otherwise the expansion will occur
at read-in time just as at present.  Three other internal markers:
|-,-/||  |-,@-/||  and |-,.-/||    The latter one is for NCONC
instead of APPEND, and thus we can have `(A ,@B)  generate
(APPEND A B ()), thus copying B, but `(A ,.B)  generate
(APPEND A B).  Note that `(,.A B) would generate (NCONC A B).
[this idea, for ",." comes from RBR, I think].
GRINDEF would print out a form just like it was read-in, using
the READMACROINVERSE feature;  however, there is a flaw in this
feature in that readmacros won't appear in the CDR part of
a list;  thus you never see '(A . 'B)  grindef'd out that way.
For the same reason, it would be somewhat of a pain to get
`(A . ,B) to grindef out that way, but `(A ,@B) and `(A ,.B)
both win.  Note the weird commutation:  `(A . ,B) works the
same as `(A ,. B)  ??
All the aforesaid "markers" and macros would be on the obarray,
so that any PRINTing or GRINDEFing (regardless of the success of
the READMACROINVERSE attempts)  would be readable back in with
no loss of functionality.
Any further comments?