Deutsch   English   Français   Italiano  
<672BC0C5.4040100@grunge.pl>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder2.eternal-september.org!news.quux.org!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail
From: fir <fir@grunge.pl>
Newsgroups: comp.lang.c
Subject: Re: on named blocks concept
Date: Wed, 06 Nov 2024 20:17:25 +0100
Organization: i2pn2 (i2pn.org)
Message-ID: <672BC0C5.4040100@grunge.pl>
References: <4b9a47d628677882c26b2518a78571043ef1bdb9@i2pn2.org> <vggdhl$27v1j$1@dont-email.me> <vggecf$27v1j$2@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: i2pn2.org;
	logging-data="1258414"; 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
To: Thiago Adams <thiago.adams@gmail.com>
In-Reply-To: <vggecf$27v1j$2@dont-email.me>
X-Spam-Checker-Version: SpamAssassin 4.0.0
Bytes: 4375
Lines: 117

Thiago Adams wrote:
> On 06/11/2024 15:46, Thiago Adams wrote:
>> 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
>>
>>
>
> Sorry I thought your motivation was exit blocks.
> I am not sure what is your motivation now, maybe lambdas? local
> functions? long jump?
> local jumps?
>
>
no, it simply gives you more 'power' in  code (in means of expression) 
generally speaking... specifically it may give you various things
but hard to name the possible usacases as it will eventually show

you eventually can think on it itself


it also (as its logical basic concept) gives some thoughts on how 
functions are badly done in c - becouse the "stack based" locals
and arguments are bad imo..without it you may do more "tricks"
with code making your code can be shorter and clever sometimes imo