Date: Mon, 7 May 2001 17:48:47 +0200 (CEST) From: Michal Gajda <mg169780@zodiac.mimuw.edu.pl> * Introduction of general hygienic macro's as you propose, forces us to cope with following problems: 1. Full typechecking of macros(in place of definition) seems to need second-rank polymorphism. (Decidable, but harder to implement) Of course you can delay typechecking until you expand all macros, but then error-messages become unreadable. ... An interesting option is to allow the macro writer to supply his own type-checker that is then run before macro-expansion. Type errors can then be presented to the user using the pre-expansion source code. I can hear you all boggling over the lack of safety in what I have just proposed. Suppose the macro-writer provides a bogus type-checker? Ack! Unsafe code! Mid-air collisions! Nuclear melt-downs! Am I nuts!? Actually no. Just do a separate type-check of the fully expanded code using only the built-in type-checkers. If this verification check comes up with a different answer, then one of your macros has a buggy type-checker. (What you do about finding -that- bug and reporting it to the author of the macro is another issue...) A student did a Masters thesis for Olin Shivers and me at MIT last year trying to work out the kinks in a macro facility that would work approximately this way. The results were interesting, but not yet ready for prime time.