[bitc-dev] Macro removal rationale
michaelw at foldr.org
Thu Jul 20 12:17:57 EDT 2006
* "Jonathan S. Shapiro" <shap at eros-os.org> [2006-07-20T12:04-0400]:
> In the end, there were three factors:
> 1. My conclusion that building a "clean" macro system (one that does not
> capture the wrong identifiers) is extremely tricky and the result tends
> to be hard to use.
This is a little surprising. The Scheme community spent quite some on
this, and one would have thought that there is a suitable compromise.
> 2. My observation that there were few good motivating cases for macros
> in a language that supports inlining properly.
Macros for inlining is abuse, I would say. Proper use of macros
includes creating new syntactic abstractions, basically to make a
Canonical example: how long did Java have to wait for support for
simplified iterators? (Schemers/Lispers would just write a macro for
that, no vendor intervention needed)
> 3. Mark Miller's observation that macros obscure readability by making
> it harder to understand what the code in front of you actually does.
Macros also ensure that, e.g., resources are properly freed, leaving
no room there for errors. Examples: WITH-OPEN-FILE and friends.
More information about the bitc-dev