On 8/30/2012 7:08 PM, Kenneth Brody wrote:
> On 8/29/2012 11:36 AM, Eric Sosman wrote:
>> On 8/29/2012 11:10 AM, Kenneth Brody wrote:
> [...]
>>> Perhaps:
>>>
>>> #define FOREVER for(;
>>>
>>> Not that I'd ever use such a thing, of course. Still clever. Still
>>> "not really a good thing to do".
>>
>> In my own young and foolish days, I used
>>
>> #define until(x) while(!(x))
>>
>> believing it improved readability. Foolishness never leaves us
>> altogether, but youth and inexperience do -- and clevernesses of
>> this kind went into my personal "Wish I'd never done that" file
>> long ago. (Right next to the FORTRAN II code that avoided an IF
>> by using a computed GOTO.)
>
> Ah. You must have read that famous article "If Considered Harmful".
<off-topic>
Perhaps you overlooked the Roman numeral. In those days,
FORTRAN's only IF had the form
IF ( expression ) n1, n2, n3
.... with the meaning: "GOTO statement number `n1', `n2', or `n3'
as `expression' is negative, zero, or positive." Thus
IF (X) 1, 2, 1
.... was a zero/nonzero test,
IF (X) 1, 2, 2
.... was a negative/nonnegative test, and so on. IF(X) 1,1,1
was a plain old unconditional GOTO 1 in disguise.
FORTRAN IV added an alternate kind of IF that was closer to
what we find in C -- but only a little bit closer.
<super-off-topic>
Every now and then -- not often, but every now and then --
I find myself longing for the good old three-way IF. A binary
search needs two of these newfangled two-way `if' tests where
one three-way test would suffice, and a similar situation crops
up in the inner loop of Heapsort. Ah, well: Change (even change
for the better) always involves loss.
</super-off-topic>
</off-topic>
</maudlin-reminiscence>
--
Eric Sosman
d