On the other hand, I'd also like to see a few examples of what people would use a macro facility for in Perl. Assuming that p5 had a C-like
#define name(arg[,arg]) {\ some code here\ }
I wouldn't use it for C-like purposes. C-like macros are not that powerful - you can only do basic textual substitutions. To quote Synopsis 6:
Macros (keyword: macro) are routines whose calls execute as soon as they are parsed (i.e. at compile-time). Macros may return another source code string or a parse-tree.
Returning a parse-tree is where it gets interesting. What we get here are LISPish macros. We'll be able to write code that's run at compile time to create our own syntax.
Want a switch statement in Perl6? Just write one.
Want to add AOP or Design by Contract support to Perl6? Just write some new syntax.
Want to create a domain-specific language so you can write code that more directly reflects the problem domain? Yes - you guessed it - just write some new syntax!
There's a discussion of macros on perl.perl6.language that you might find interesting. Also read the relevant bit of Apocalypse 6.
Macros - can't wait ;-)
Update: Just come across A Macro System for Perl?, which has some relevant material for those who are interested.
In reply to Re: Re: Macros, LFSPs and LFMs
by adrianh
in thread Macros, LFSPs and LFMs
by stefp
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |