David Van Horn scripsit:

> What does "low-level hygienic macros" mean?

Alex Shinn's discussion of the matter at
http://www.mail-archive.com/[email protected]/msg08779.html is very
illuminating, if you discount his obvious prejudice against syntax-case.

I quote the first few paragraphs here:

# There seems to be a lot of confusion in the Chicken
# community, and the Lisp community in general, about the
# different macro systems, so I thought provide some
# background information and discussion of the eggs available
# in Chicken and their uses.
# 
# Low-level means direct manipulation of sexps to produce
# sexps - you're generating code expressions by hand.
# High-level means you use some higher abstraction like
# templating - the underlying processing may or may not make
# use of sexps at all.  Low-level of course offers the most
# control.  High-level has nice benefits such as providing a
# location in source code for line-number debug info, and
# easier analysis by other tools like analysers and editors.
# 
# Neither of these have anything to do with hygiene.  Hygiene
# is a relatively newer concept, so all the old macro systems
# were either unhygienic + low-level or unhygienic +
# high-level.  defmacro is the former - it's low-level
# manipulation of sexps.  The C preprocessor can be thought of
# as the weakest, most poorly designed instance of unhygienic
# high-level macros.  It's a templating system without any
# kind of destructuring, conditionals or polymorphism.  Other
# alternatives like the m4 macro preprocessor and pretty much
# every assembly preprocessor are more powerful instances of
# high-level macro systems.

Note that the Chicken it describes is Chicken 3; Chicken 4 has only one
choice, explicit renaming (with syntax-rules on top).

-- 
I don't know half of you half as well           John Cowan
as I should like, and I like less than half     [email protected]
of you half as well as you deserve.             http://www.ccil.org/~cowan
        --Bilbo

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to