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
