David Rush scripsit:

> Which is all well and good, but what does any of this have to do with
> macros? Early Lisps treated macros as syntactic abstractions and

Rather, early Lisps treated them as *procedural* abstractions and ...

> therefore incorporated their reduction into the APPLY function. 
> This led us to FEXPRs,

FEXPRs were there from the Lisp 1.5 days; macros came much later.

> However, it seems that macros could also be
> viewed as syntactic *extensions* and as such be more properly
> considered as part of EVAL's functional remit.

That is in fact the realization that led to the abolition of user-written
FEXPRs from Common Lisp and Scheme: that macros do everything FEXPRs do
that's worthwhile, and are far more tractable.  (You still need some
primitive FEXPRs, now renamed "syntax" in Scheme and "special forms"
elsewhere.)

> From this view it seems that we ultimately derive hygienic macros -
> as their reduction can be accomplished entirely in terms of textual
> manipulation with only minimal (actually zero I think) reference to
> anything outside of the syntactic reduction machinery in the MCI.

Well, it depends.  Certainly true for syntax-rules, but low-level macro
systems (hygienic or not) depend on the whole Lisp system, since they
provide access to the entire language to construct the macro.  (ISLisp is
an exception; only a subset of ISLisp is available at macro expansion
time; roughly speaking, nothing that can side-effect the environment in
which the macro expander is executing.)

> Now it is interesting to note that hygienic macros float the syntactic
> extension functionality outside of the entire EVAL/APPLY loop and into
> a conceptually separate pass.

That's true of any macros whatsoever; it is, in some sense, the point of
macros.  It's possible to intertwine that pass with ordinary evaluation,
as SCM shows, but at a high price in conceptual machinery.

> This makes environmental manipulations completely impossible to the
> macro processor.

Again, not so.  That's a matter of level.  C macros can't do environmental
manipulation because they are high-level, not because they are hygienic
(they aren't).

It's very important not to conflate hygiene with level -- they are
utterly orthogonal.

-- 
Yes, chili in the eye is bad, but so is your    John Cowan
ear.  However, I would suggest you wash your    co...@ccil.org
hands thoroughly before going to the toilet.    http://www.ccil.org/~cowan
        --gadicath

_______________________________________________
r6rs-discuss mailing list
r6rs-discuss@lists.r6rs.org
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to