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


Groups > comp.lang.c > #143154

Re: for ... else blocks

From "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com>
Newsgroups comp.lang.c, comp.lang.c++
Subject Re: for ... else blocks
Date 2019-04-17 00:45 +0200
Organization A noiseless patient Spider
Message-ID <q95ltu$c8r$1@dont-email.me> (permalink)
References <q958g9$rfp$1@dont-email.me> <q9591c$v09$1@dont-email.me> <z8qtE.88600$SH1.74138@fx03.am4> <q95fqk$94s$1@dont-email.me> <q95hsl$kuq$1@dont-email.me>

Cross-posted to 2 groups.

Show all headers | View raw


On 16.04.2019 23:36, David Brown wrote:
> On 16/04/2019 23:02, Rick C. Hodgin wrote:
>> On 4/16/2019 3:35 PM, Bart wrote:
> 
>>> Do you have any actual use-cases for this?
>>
>> I came across a need for it today in my code, which is why / how it
>> occurred to me.
>>
> 
> I think you'll need to show some concrete examples in order to show the 
> point.
> 
> At the moment, I'm left thinking that you are constructing complicated 
> syntax for the programmer to write things that a compiler can handle 
> already using simple C syntax and some optimisations.

I don't see Rick's postings, but I imagine what he wants is a construct 
for this (note: I think it indicates the lambda should be a named func):

     const bool early_loop_exit = invoke( [&]() -> bool
     {
         for( INIT; COND; UPDATE )
         {
             if( SOMETHING ) { return true; }
         }
         return false;
     } );

     if( not early_loop_exit )
     {
         // The logical "else" part.
     }

It can also be expressed with all code inline in current func with 
exceptions. The `return false` then corresponds to throwing of an 
exception. I believe that's how the construct works in CPython.

The exception based logic would look more clean but potentially carries 
some execution overhead for the "else" case.


Cheers!,

- Alf

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

for ... else blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-16 14:57 -0400
  Re: for ... else blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-16 15:06 -0400
    Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-16 20:35 +0100
      Re: for ... else blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-16 17:02 -0400
        Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-16 23:36 +0200
          Re: for ... else blocks "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-04-17 00:45 +0200
            Re: for ... else blocks Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-17 01:06 +0100
              Re: for ... else blocks "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-04-17 04:45 +0200
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-17 09:32 +0200
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 11:38 +0100
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-17 14:05 +0200
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 13:57 +0100
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-17 15:36 +0200
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 15:16 +0100
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-17 17:51 +0200
                Re: for ... else blocks "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-04-17 16:15 +0200
                Re: for ... else blocks "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-04-17 16:24 +0200
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-17 17:55 +0200
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 17:44 +0100
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 17:48 +0100
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 10:18 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 10:32 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 10:38 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 12:12 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 12:25 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 12:39 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 15:52 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 16:50 -0700
                Re: for ... else blocks fir <profesor.fir@gmail.com> - 2019-04-17 13:58 -0700
                Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-18 12:21 +0200
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-18 18:54 +0100
                Re: for ... else blocks Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-18 20:36 +0100
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-18 21:15 +0100
                Re: for ... else blocks Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-18 21:46 +0100
                Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-17 15:05 +0100
                Re: for ... else blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-17 10:55 -0400
                Re: for ... else blocks Ike Naar <ike@iceland.freeshell.org> - 2019-04-18 05:57 +0000
                Re: for ... else blocks Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-17 20:43 +0100
  Re: for ... else blocks Chad <cdalten@gmail.com> - 2019-04-16 12:15 -0700
  Re: for ... else blocks Bart <bc@freeuk.com> - 2019-04-16 20:27 +0100
  Re: for ... else blocks Christian Gollwitzer <auriocus@gmx.de> - 2019-04-16 21:34 +0200
    Re: for ... else blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-16 16:54 -0400
    Re: for ... else blocks David Brown <david.brown@hesbynett.no> - 2019-04-16 23:32 +0200

csiph-web