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


Groups > comp.lang.c > #136775

Re: An enhancement

Subject Re: An enhancement
Newsgroups comp.lang.c
References (1 earlier) <24iu8f-0qq.ln1@gangtai.home.grep.be> <aSwXVuMIilhGorEjHpWwCxsPmhOHs@bongo-ra.co> <36312068-a8ea-41ec-9d00-0f6ab475bcfa@trust.no1> <e0499a15-3bee-4bb0-8377-1b5a4f2680f2@googlegroups.com> <g2j7shFohs9U1@mid.individual.net>
From Bart <bc@freeuk.com>
Message-ID <ec_wD.60403$5A2.52746@fx25.am4> (permalink)
Organization virginmedia.com
Date 2018-10-15 11:44 +0100

Show all headers | View raw


On 15/10/2018 11:18, Ian Collins wrote:
> On 15/10/18 23:07, already5chosen@yahoo.com wrote:
>> On Monday, October 15, 2018 at 12:19:44 PM UTC+3, Queequeg wrote:
>>> Spiros Bousbouras <spibou@gmail.com> wrote:
>>>
>>>> I think what David really wants is local functions (i.e.
>>>> functions within functions) which do not accept any parameters ,
>>>> do not return a value and a syntax which allows the compiler to
>>>> recognise that it is a local function call without having
>>>> encountered first a declaration or definition for the local
>>>> function. The specific example he gave can be written using
>>>> goto's but the more general case cannot (without very convoluted
>>>> gymnastics).
>>>
>>> I guess he should learn about lambda functions in C++11.
>>>
>>> -- https://www.youtube.com/watch?v=9lSzL1DqQn0
>>
>>
>> I don't think so.
>>
>> 1. Lambda functions are anonymous. David wants *named* nested
>> functions. Being named is critically important, because [it seems to
>> me that] important point of his proposal is an ability to call it
>> from more than one location in the outer function.
> 
> You can name C++ lambdas.  From a bit of my own code:
> 
>    auto error = [this]( std::string function )
>    {
>      LOG_ERROR("Open: "+function+" failed %s", strerror(errno) );
>      close(fd);
>      fd = kInvalidFd;
>      return false;
>    };
> 
>    int Opt = 0;
>    if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &Opt, sizeof(Opt)) != 0)
>    {
>      return error("setsockopt");
>    }
> 
>    ... repeated in similar fashion for various socket operations ...

Which bit is the named lambda?

(BTW using identifiers such as 'function' in example code of what could 
be an unfamiliar language is confusing. 'function' looks like it could 
be a keyword.)

>> 2. Lambda functions are in-place David wants his nested functions to
>> be defined at the end of outer function because he feels that it
>> would improve readability for top-down oriented readers. It seems
>> likely that David himself is top-down character so he should know
>> their needs better than decisively bottom-up people like myself.
> 
> Maybe, but I can't help feeling that's a bit like declaring a variable 
> after it's used!

(What's wrong with that? Example from an actual language:

     proc start=
         a:=17
         b:=4
         c:=a/b
         println c

         real a,b,c
     end

     Output: 4.25

No different from calling a function which is defined later (C doesn't 
allow this without a prior declaration**, but I'm sure many languages 
do), or using goto with a label defined later (C allows this one).

Think of it as a glossary which usually goes at the end of a book.)

(** Despite this, often this can work, but with warnings, or sometimes 
with none. It's just that kind of language  - yeah, but, maybe, 
sometimes, it depends .... Expecting yes or no is apparently too much to 
expect.)

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