Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles; site iuvax.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxn!ihnp4!inuxc!iubugs!iuvax!cjl From: cjl@iuvax.UUCP Newsgroups: net.lang.c Subject: Re: "C" wish list. Message-ID: <9500028@iuvax.UUCP> Date: Sat, 26-Oct-85 11:55:00 EST Article-I.D.: iuvax.9500028 Posted: Sat Oct 26 11:55:00 1985 Date-Received: Mon, 28-Oct-85 03:53:52 EST References: <335@graffiti.UUCP> Lines: 57 Nf-ID: #R:graffiti:-33500:iuvax:9500028:000:1646 Nf-From: iuvax!cjl Oct 26 10:55:00 1985 I would like to see a loop-exit statement added to replace the break statement. For example a loop with multi-exit points should not pretend to be a "for" loop like : for (i=0; i<100; i++) { /* IN NATURAL LANG, THIS MEANS THE LOOP HAS A SIMPLE EXIT POINT, -- AND WILL ITERATE EXACTLY 100 TIMES. */ checkReturn = function1(x); if (checkReturn == BAD) break; /* THE BREAK STATEMENT HERE FUNCTIONS LIKE GOTO AND DESTROYS -- THE ORIGINAL, SIMPLE MEANING OF FOR STATEMENT. */ ...... checkReturn = function5(x); if (checkReturn == BAD) result[i] = 0; else result[i] = function6(x); } With loop-exit statement, the reader is warned explicitly the existence of multi-exit ( or break) points inside the loop. i = 0; loop { /* WHENEVER WE SEE A LOOP STATEMENT, WE KNOW THERE MAY HAVE -- SEVERAL EXIT POINTS. IT IS NOT AN EASY LOOP. */ if (i>=100) then exit; /* NOW YOU DON'T HAVE THE IMPRESSION THAT THE LOOP -- WILL ALWAYS ITERATE 100 TIMES BECAUSE THERE MAY EXIST -- OTHER EXIT POINTS. */ checkReturn = function1(x); if (checkReturn == BAD) exit; ................. checkReturn = function5(x); if (checkReturn == BAD) result[i] = 0; else result[i] = function6(x); i++; } This is a style encouraged by Ada or Modula-2 language. In existing C language, we may use macro definitions to simulate the loop-exit statement as : define loop for(,,) define exit break C.J.Lo Dept. of CIS, IUPUI ARPA : cjl@Indiana@CSNet-Relay UUCP : ...!iuvax!cjl