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. Larry