[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: choosing a language for your audience or macros vs syntax?




Macros exist for the very same reason that lambda exists (or Lambda): 
to abstract over patterns. 

lambda abstracts over values. 
Lambda abstracts over types. 
Syntax abstracts over syntax. 

A phase separation (theorem) should ensure that all three of them 
abstract at the right time and in a way that doesn't affect later 
time: 

lambda was easy. 
Lambda took some time, but if you devise the calculus properly 
 (called XML way before other guys grabed those letters), you 
 can work that out. This gives us Functors and ParaPolymorphism 
 in ML. 
Syntax took some time, but I think Matthew Flatt's paper @ ICFP
 nailed this one. 

All of these of course abstract relative to some core language, 
and then the expressive power of that core language matters. 

To claim that just because lambda x. is spelled \x. eliminates 
the need for syntatic abstraction is equivalent to the claim
that just because emacs is good at copy/paste and keyboard
macros we don't need function definitions in any programming
language. 

Think about this. -- Matthias