Phases: the fundamental slogan is that macros are elements of compilers and 
that you must be able to write your Scheme compiler in Prolog and your C 
compiler in Snobol. 

Long hand: It is particularly evil to share any effects (i/o, !, exn, cc) 
between compiler and run-time because we ran into problems all the time 
(1980s). At the same time you do want the full power of programming in both 
parts. Meaning you want at least two distinct instances of Scheme for macro 
expansion and run-time. 

That's how Bruce Duba and I put for 20 years, from 1986. But we just talked. 
Matthew's implementation some 10 years ago made it concrete and highly usable. 
Grateful ever since. What Bruce and I had overlooked is that it is not only 
correct, it adds expressive power in the practical sense that we freely use 
macros much more freely and thus increase our productivity. One-phase macros 
inhibit thought and freedom of expression. 




____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to