On Wed, May 10, 2006 at 08:09:45AM +0100, Daniel Hulme wrote:
: > qX ::= "q:x:y:z";
: > as a simple, argumentless "word" macro.
: But would that DWIM when I come to write
: qX(stuff, specifically not an adverb argument);
Just looking at it, I would expect qX() to call a function. Knowing the macro,
I'd expect it to do q :x :y :z() and then treat the ; as the delimiter, which
probably means the macro should have been written:
qX ::= "q:x:y:z ";
and then the qX() form either does "q:x:y:z ()" or calls the qX() function.
Which all probably means that we're still better off distinguishing quote
macros from "word" macros so that the intent is clear. A quote macro would
have no doubt: qX() always means to call the qX function, not the quoter.