[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Help in writing infix macro in CL.
- To: Scott E. Fahlman <Fahlman@C.CS.CMU.EDU>, S. Sridhar <sridhar%tekecs%tektronix.csnet@CSNET-RELAY.ARPA>
- Subject: Help in writing infix macro in CL.
- From: David C. Plummer <DCP@SCRC-QUABBIN.ARPA>
- Date: Tue, 6 May 86 10:09 EDT
- Cc: common-lisp@SU-AI.ARPA
- In-reply-to: <FAHLMAN.12204516780.BABYL@C.CS.CMU.EDU>
Date: Tue, 6 May 1986 08:52 EDT
From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
I don't think that you can write an infix reader just by defining new
character macros for #\+ and friends. This new reader needs to get at
the whole expression, either because it is caled directly by your
program or because it is invoked when you see that first #\(, assuming
that all your top-level expressions are parenthesized. Of course, the
new reader can be built using the old one, or more specialized built-in
functions, to do most of the work, but it can't wait until you hit an
infix operator before it gets invoked.
In Zetalisp and Symbolics Common Lisp (and probably other MIT-derived
LispM dialects), there is a sharp-sign macro (altmode/lozenge) that
invokes the infix reader. Therefore (lozenges changed to dollar signs):
(equal '#$ a+b $ '(+ a b)) => T