On Thu, May 03, 2012 at 05:02:08PM -0700, John Clements wrote:
>> and updated the Wikipedia page to reflect my better understanding. The text now reads:
>> "The earliest Lisp macros took the form of FEXPRs, function-like operators whose inputs were not the values computed by the arguments but rather the syntactic forms of the arguments, and whose output were values to be used in the computation. In other words, FEXPRs were implemented at the same level as EVAL, and provided a window into the meta-evaluation layer. This was generally found to be a difficult model to reason about effectively [6].
> An alternate, later facility was called DEFMACRO, a system that allowed programmers to specify source-to-source transformations that were applied before the program is run."
FEXPRs were used to implement things like COND, QUOTE, and the like.
It would be difficult to use macros instead of FEXPRs for these,
unless they were built into the interpreter. And FEXPRs were the
mechanism by which this was done.
-- hendrik