3 ms·
It makes the language considerably more flexible. Instead of a DSL hacking around the existing syntax (e.g. in Ruby), you're able to define anything you want,
by daeken 17y ago
It makes the language considerably more flexible. Instead of a DSL hacking around the existing syntax (e.g. in Ruby), you're able to define anything you want, within the bounds of the parser (which, in my case, is very freeform, a la Lisps). It also means that a new implementation is effectively just compiling a small subset of the language, then the rest of it comes along for the ride, due to the macros. This is similar to the way that Scheme is defined as a large set of functionality atop a small bit that's implementation-specific.