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                                         

Reply via email to