Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site mtxinu.UUCP Path: utzoo!linus!vaxine!wjh12!genrad!decvax!ucbvax!ucbtopaz!unisoft!mtxinu!ed From: ed@mtxinu.UUCP Newsgroups: net.lang Subject: Re: Re: Gotos; tail-recursion - (nf) Message-ID: <130@mtxinu.UUCP> Date: Sun, 17-Jun-84 21:35:15 EDT Article-I.D.: mtxinu.130 Posted: Sun Jun 17 21:35:15 1984 Date-Received: Tue, 19-Jun-84 01:41:09 EDT References: <5400008@ea.UUCP> Organization: mt Xinu, Berkeley Lines: 24 While I must agree that there are no bad language constructs, only bad uses for them, I must also say that I can often find a valid use for a "bad" construct. Consider the following implementation of a debugging printf macro: #define Dprintf if(!cond); else fprintf It can be inserted anywhere in the code. The obvious implementation, namely #define Dprintf if(cond) fprintf can't be put just anywhere without affecting other statements. While I do not think that including this construct in the middle of the text of a program is good, it seems reasonable to encapsule it in one place. Then, although it may be a confusing construct, the reader needs only to understand it once and can then decide that it works, rather than trip over it in several places. -- Ed Gould ucbvax!mtxinu!ed