Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #136467

Re: An enhancement

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

Show all headers | View raw


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


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