<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On May 3, 2012, at 7:11 AM, Matthias Felleisen wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>On May 3, 2012, at 1:29 AM, John Clements wrote:<br><br><blockquote type="cite">"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 syntactic fragments to be used in place of the FEXPR's use. In later Lisps, FEXPRs were replaced by DEFMACRO, a system that allowed programmers to specify source-to-source transformations that were applied before the program is run."<br></blockquote><br><br>I have accepted these two sentences as facts for the last 28 years so if you find out that they are wrong, please let us know in which way. </div></blockquote><br></div><div>Sigh. Okay, I just spent 30 minutes and dug up the e-mail that Joe Marshall sent me. He pointed out that my text was wrong. The most egregious error was my suggestion that FEXPRs emitted source code, when in fact they emit *values* to be used in continued computation. I've posted his e-mail to my website at </div><div><br></div><div><a href="http://www.brinckerhoff.org/scraps/joe-marshall-on-FEXPRS-and-DEFMACRO.txt">http://www.brinckerhoff.org/scraps/joe-marshall-on-FEXPRS-and-DEFMACRO.txt</a></div><div><br></div><div>and updated the Wikipedia page to reflect my better understanding. The text now reads:</div><div><br></div><div>"The earliest Lisp macros took the form of <a href="http://en.wikipedia.org/wiki/Fexpr" title="Fexpr">FEXPRs</a>,
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 <sup id="cite_ref-5" class="reference"><a href="http://en.wikipedia.org/wiki/Macro_%28computer_science%29#cite_note-5"><span>[</span>6<span>]</span></a></sup>.</div><p>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."</p><div><br></div><div><br></div><div>John</div></body></html>