Path: ...!eternal-september.org!feeder2.eternal-september.org!news.quux.org!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail From: fir Newsgroups: comp.lang.c Subject: Re: else ladders practice Date: Sun, 03 Nov 2024 14:39:38 +0100 Organization: i2pn2 (i2pn.org) Message-ID: References: <3deb64c5b0ee344acd9fbaea1002baf7302c1e8f@i2pn2.org> <78eabb4054783e30968ae5ffafd6b4ff2e5a5f17@i2pn2.org> <6724CFD2.4030607@grunge.pl> <2491a699388b5891a49ef960e1ad8bb689fdc2ed@i2pn2.org> <6726C341.6030102@grunge.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 3 Nov 2024 13:39:42 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="754764"; mail-complaints-to="usenet@i2pn2.org"; posting-account="+ydHcGjgSeBt3Wz3WTfKefUptpAWaXduqfw5xdfsuS0"; User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24 X-Spam-Checker-Version: SpamAssassin 4.0.0 In-Reply-To: Bytes: 4368 Lines: 114 Bart wrote: > On 03/11/2024 00:26, fir wrote: >> Bart wrote: >>> ... >> >> as to this switch as i said the C jas some syntax that resembles >> switch and it is >> >> [2] { printf("one"), printf("two"), printf("three") } >> >> i mean it is like this compound sometheng you posted >> >> { printf("one"), printf("two"), printf("three") } [2] >> >> but with "key" on the left to ilustrate the analogy to >> >> swich(n) {case 0: printf("one"); case 1: printf("two"); case 2: >> rintf("three") } >> >> imo the resemblance gives to think >> >> the difference is this compound (array-like) example dont uses defined >> keys so it semms some should be added >> >> [n] {{1: printf("one")},{2: printf("two")},{3: printf("three")} } >> >> so those deduction on switch gives the above imo >> >> the question is if some things couldnt be ommitted for simplicity >> >> [key] {'A': printf("one"); 'B': printf("two"); 'C': printf("three"}; } > > >> something like that >> >> (insted of >> >> switch(key) >> { >> case 'A': printf("one"); break; >> case 'B': printf("two"); break; >> case 'C': printf("three"}; break; >> } > > > Here the switch looks clearer. Write it with 300 cases instead of 3, > then that becomes obvious. > depend on what some understoods by clearer - imo not this []{;;;} at least is like logically drawed from other c syntax and switch case overally the word case is ok imo but the word switch is overrally like wrong imo switch could be better replaced by two word "select" and maybe "goto" as this swich that selects could use select and this one wgo does goto could use word goto goto key; 'A': printf("a"); 'B': printf("b"); 'C': printf("c"); ' overally thete is lso possibility to do it such way void foo() { "a" { printf("aaa"); } //definitions not calls itself "b" { printf("bbb"); } "c" { printf("ccc"); } "a";"b";"c"; //calls (???) // would need maybe some some syntax to call it (many could be chosen) // "a"() ? foo."a" ? foo.[key] ? maybe this woudl be the best if established as ths is more syntaktc "low lewel" } > The first time I wrote a big C program, I used a syntax like this: > > switch (x) > when 'A', 'B' then printf("one") > when 'C' then printf("two") > else printf("three") > endsw > > This needed to be converted to normal C before compiling, but the macro > system wasn't quite up to the job (making using gnu C which allows for > lists of case labels). > > Instead I used a script to do the conversion, which needed 1:1 line > correspondence. The result was something like this: > > switch (x) { > break; case 'A': case 'B': printf("one"); > break; case 'C': printf("two"); > break; default: printf("three"); > } > >