Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #136467
| Newsgroups | comp.lang.c |
|---|---|
| Date | 2018-10-09 04:08 -0700 |
| References | <531a5bb6-dc81-4eeb-9adf-1bf8eb310f65@googlegroups.com> <87efd0vwx1.fsf@bsb.me.uk> <8874a5e1-64b6-461c-93f0-1416f96420d4@googlegroups.com> <8736tfx6s2.fsf@bsb.me.uk> <eD%uD.14891$6N5.12048@fx29.am4> |
| Message-ID | <810d2296-2dfd-4791-9d7e-3ad09db044c7@googlegroups.com> (permalink) |
| Subject | Re: An enhancement |
| From | already5chosen@yahoo.com |
On Tuesday, October 9, 2018 at 1:43:31 PM UTC+3, Bart wrote:
> On 09/10/2018 02:12, Ben Bacarisse wrote:
> > David Kleinecke <dkleinecke@gmail.com> writes:
> >
> >> On Monday, October 8, 2018 at 4:30:40 PM UTC-7, Ben Bacarisse wrote:
> >>> David Kleinecke <dkleinecke@gmail.com> writes:
> >>>
> >>>> I want to propose an enhancement:
> >>>>
> >>>> Add to C the statement type
> >>>> DO identifier SEMICOLON
> >>>> where the identifier is a label. The meaning is that
> >>>> the statement just identified is replaced by the
> >>>> statement following the label.
> >>>>
> >>>> This enhancement is potentially ambiguous in
> >>>> DO identifier SEMICOLON WHILE ... SEMICOLON
> >>>> and this situation has come up in another thread
> >>>> and triggered my post here. In order to preserve
> >>>> conforming it is necessary that the ambiguity be
> >>>> resolved as a DO-WHILE leaving
> >>>> identifier SEMICOLON
> >>>> as the repeated code. But the whole reduces to
> >>>> WHILE .... SEMICOLON
> >>>
> >>> Rather then use an ambiguous syntax, why not write it as
> >>>
> >>> label();
> >>>
> >>> The you could even add arguments and parameters and, hey presto, you get
> >>> what Knuth (a-invend others) would have wanted from the get-go.
> >>
> >> I don't follow - a label without following colon is not in
> >> the spirit of C. What do you mean?
> >
> > I mean don't write
> >
> > do something;
> >
> > but write
> >
> > something();
> >
> > since it is, in effect, a function call. Then go all the way and rather
> > than writing
> >
> > something:
> > /* code for 'something' ... */
> >
> > write
> >
> > void something()
> > {
> > /* code for 'something' ... */
> > }
> >
> > You are re-inventing local functions. Just go the whole hog and allow
> > local functions, because the function abstraction is familiar and yet
> > more flexible.
>
> The OP is proposing a lightweight, easier-to-implement feature compared
> to local functions.
>
> Local functions are a can of worms (mainly to do with accessing the
> local variables of the enclosing functions).
I don't see how what David proposes is not *exactly* the same can of worms.
I once was forced to read and understand largish code base (in Ada) written with a lot of local functions where programmers didn't think twice before accessing/modifying variables from the outer scope. It was painful. Since then I very much appreciate an absence of local functions in C.
>
> (This proposal has similarities to a feature of Rick's from a few years
> ago, a form of which I'd implemented for a while. But then got rid of
> it, because (1) it looked a bit naff (I used '@' rather than 'do'); (2)
> I hardly ever used it; (3) it was difficult to express for a C target.
>
> This assumes you can write 'do something' from more than one place, and
> that each named block will never be reentrant.)
>
> --
> bart
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-08 15:44 -0700
Re: An enhancement Ian Collins <ian-news@hotmail.com> - 2018-10-09 11:48 +1300
Re: An enhancement Spiros Bousbouras <spibou@gmail.com> - 2018-10-08 23:16 +0000
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-09 00:30 +0100
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-08 17:24 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-09 02:12 +0100
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-08 22:42 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-09 14:41 +0100
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-09 11:15 +0200
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-09 16:09 +0100
GCC nested functions: deprecated? (Was: An enhancement) gazelle@shell.xmission.com (Kenny McCormack) - 2018-10-09 15:36 +0000
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-09 21:01 +0200
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-09 11:43 +0100
Re: An enhancement already5chosen@yahoo.com - 2018-10-09 04:08 -0700
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-09 12:29 +0100
Re: An enhancement Spiros Bousbouras <spibou@gmail.com> - 2018-10-08 23:37 +0000
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-08 17:22 -0700
Re: An enhancement Ian Collins <ian-news@hotmail.com> - 2018-10-09 13:30 +1300
Re: An enhancement Spiros Bousbouras <spibou@gmail.com> - 2018-10-09 05:23 +0000
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-08 22:50 -0700
Re: An enhancement Richard Damon <Richard@Damon-Family.org> - 2018-10-09 08:28 -0400
Re: An enhancement Wouter Verhelst <w@uter.be> - 2018-10-09 14:05 +0200
C is often used as an "implementation language" for other languages. (Was: An enhancement) gazelle@shell.xmission.com (Kenny McCormack) - 2018-10-09 13:13 +0000
Re: C is often used as an "implementation language" for other languages. (Was: An enhancement) David Brown <david.brown@hesbynett.no> - 2018-10-09 16:51 +0200
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-09 14:17 +0100
Re: An enhancement Thiago Adams <thiago.adams@gmail.com> - 2018-10-09 05:20 -0700
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-09 11:33 -0700
Re: An enhancement Thiago Adams <thiago.adams@gmail.com> - 2018-10-09 13:41 -0700
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-09 12:35 +0100
Re: An enhancement Wouter Verhelst <w@uter.be> - 2018-10-09 14:04 +0200
Re: An enhancement Spiros Bousbouras <spibou@gmail.com> - 2018-10-09 12:29 +0000
Re: An enhancement Wouter Verhelst <w@uter.be> - 2018-10-09 19:50 +0200
Re: An enhancement queequeg@trust.no1 (Queequeg) - 2018-10-15 09:19 +0000
Re: An enhancement already5chosen@yahoo.com - 2018-10-15 03:07 -0700
Re: An enhancement Ian Collins <ian-news@hotmail.com> - 2018-10-15 23:18 +1300
Re: An enhancement already5chosen@yahoo.com - 2018-10-15 03:39 -0700
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-15 13:03 +0200
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-15 12:15 +0100
Re: An enhancement Thiago Adams <thiago.adams@gmail.com> - 2018-10-15 05:20 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-15 15:39 +0100
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-15 14:36 +0200
Re: An enhancement Thiago Adams <thiago.adams@gmail.com> - 2018-10-15 05:59 -0700
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-15 15:08 +0200
Re: An enhancement Thiago Adams <thiago.adams@gmail.com> - 2018-10-15 07:25 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-15 15:44 +0100
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-15 19:02 -0700
Re: An enhancement Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-10-16 05:55 +0000
Re: An enhancement jameskuyper@alumni.caltech.edu - 2018-10-16 05:37 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-16 15:11 +0100
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-16 13:33 -0700
Re: An enhancement David Kleinecke <dkleinecke@gmail.com> - 2018-10-16 21:27 -0700
Re: An enhancement Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-10-16 14:57 +0100
Re: An enhancement scott@slp53.sl.home (Scott Lurndal) - 2018-10-16 14:24 +0000
Re: An enhancement mark.bluemel@gmail.com - 2018-10-16 07:28 -0700
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-16 15:25 +0100
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-15 11:44 +0100
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-15 13:08 +0200
Re: An enhancement Bart <bc@freeuk.com> - 2018-10-15 11:22 +0100
Re: An enhancement David Brown <david.brown@hesbynett.no> - 2018-10-15 13:01 +0200
Re: An enhancement Nick Bowler <nbowler@draconx.ca> - 2018-10-15 14:43 +0000
csiph-web