Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Thiago Adams Newsgroups: comp.lang.c Subject: Re: on named blocks concept Date: Wed, 6 Nov 2024 15:46:13 -0300 Organization: A noiseless patient Spider Lines: 94 Message-ID: References: <4b9a47d628677882c26b2518a78571043ef1bdb9@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 06 Nov 2024 19:46:13 +0100 (CET) Injection-Info: dont-email.me; posting-host="ed0b0cca57889ee8a8eef5f7438bd1ef"; logging-data="2358323"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19KsQary/quH8FQMjQDSe5se3PqF1UlLkE=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:On8eXHVBH58eX9oFeKCs5BVKfKM= Content-Language: en-US In-Reply-To: <4b9a47d628677882c26b2518a78571043ef1bdb9@i2pn2.org> Bytes: 3502 On 06/11/2024 13:04, fir wrote: > if c would have something that i name as named block > much more interesting options in coding in c would be > imo avaliable.. > by named block i understood something like > > foo { >   //code here > } > > whiuch resembles function , as can be placed in 'global' > (module level) space but also could be placed locally in > functions > > int foo() { >   a { } >   b { } > } > > then it could be called internally > > int foo() { >   a { } >   b { } > >   int x = a()*a()*b(); //though imo () probab;ly should be optionall > } > > or externally > > foo.a() > > those blocks probably should have acces to local variables of > parent functions or parant block so it yelds imo to conclusion > that local variables and arguments should be by default static > (those stack variables by default are bad idea imo.. its kinda optimisation > needed whan you got 4kb RAM but on bigger machines this optimisation is > bad imo) > > if so mant things can be done with this blocks probably, im not exactly > sure what exactly > > ona assembly label blocks by defauld probably be done by > > name: >   //... >   ret > >  so then can be reused though some version to call it in place >  of definitions could be also avaliable imo (something like >  a{}() in a sense but better looking (this looks to bad) > >  overally those named block should be also united with function >  so they become the same if use on them the functionality of >  passing arguments and returning variables > >  foo { >    a {} > >    int x, y = a(1,2) >  } > >  though i maybe not sure how to add this mechanism >  possibly som,ething liek this (until something better could be found) > >  a >  { >   in int c; >   in int d; >   out int x = c+d; >   out int y = c-d; >  } > >  or >  a( int c, int d) >  { >   out int x = c+d; >   out int y = c-d; >  } > > as all c d x y are static you may call a() without any or > with any set int x, y = a(1) int x = a(1,2) and compiler > would generate the assigments (how to call it on assembly level us > wuite clear, not fully clear is what syntax in language to use > > this concept is yet not fully build yet but what i descrbed her i guess > is okay Names loops (only loops) were proposed to C2Y. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3355.htm