Fred van der Windt wrote: < begin snippet> Ah. So if I code a macro invocation with parameters that do not meet the documented specification of that macro, but the macro ignores the incorrect parameters and uses the remaining parameters to generate some code anyway without any mention of possible problems then I should not blame the macro but realise that I am not yet worthy to glance upon the macro facility.
I'll try. </end snippet> My point was a different one. A good working knowledge of the macro language, in particular of o the distinction between positional and keyword parameters/arguments, o the syntax of sublists within lists, and the like would have made this coding error obvious when all did not go well I am not hostile to the SPMs. I have seen them used effectively, i.e., in ways that reduce coding blunders. I do, however, believe 1) that in the hands of macro-language novices they create as many problems as they eliminate, 2) that it is entirely possible to write orderly code without them, and 3) that it is possible to [mis]use the SPMs in ways that produce what--pejoratively but with precedents--I shall call anarchic code. The structured programming movement for statement-level languages failed or, better, degenerated into warfare among rival notions of just what constituted 'structured' code. It failed because it was simplistic An analogy may help here. Most alliterative verse is doggerel. Why not then forbid it? The answer is that the long shadow of Sonnet XXX would loom over any schoolmaster's attempt to promulgate such a prohibition. Or again, an English-composition teacher once told my son that the particle nor could only be used preceded and yoked together with neither. Told of this, I sent her a note that contained just the phrase, "The world will little note nor long remember what we say here, . . ." (For non-United-Statesians, I note that this phrase is taken from the Gettysburg address of Abraham Lincoln, unarguably the greatest writer among our American presidents.) Authoritarian schemes--Programming languages constructed as dialects of Newspeak, Was its nicht erlaubt ist verboten, and the like--are always misconceived. Perhaps worth noting is that stray, 'extra' positional arguments can be policed to some extent within a macro definition if it is judged worthwhile to do so. Consider |&ppusage_max seta <whatever> | . . . |&npp seta n'&syslist --how many? |&no_excess setb (&npp le &ppusage_max) --no excess? | aif (&no_excess).no_excess --if so, ok |&abort setb 1 --set quit switch |&excess_count seta &npp-&ppusage -- extras count | mnote &el,'&mnpfx.<number>. &excess_count more positional parameters . . .' |.no_excess anop I will take this opportunity to make a further general comment. Technical disagreement is the stuff of this list. Rhetoric and innuendo are not. That said, anyone who wishes to engage in rhetorical warfare with me is welcome to the arena. He should come well armed for that sort of combat, and he should understand the all but certain outcome of our joust: I shall eat him before breakfast without salt. John Gilmore Ashland, MA 01721-1817 USA
