• p = {1,0,0}

    From fir@3:633/10 to All on Sun Nov 1 14:32:34 2026
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is 'blocked' from usage

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From bartc@3:633/10 to All on Sun Nov 1 13:41:59 2026
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    T s;
    s = (T){10,20};
    }



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Sun Nov 1 15:10:04 2026
    bartc pisze:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is
    'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙ T s;
    ˙˙˙ s = (T){10,20};
    }
    this (T) is rather silly here - i mean its ok if you cast something but
    if no its like

    int a = (int) 20;



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Sun Nov 1 16:13:18 2026
    fir pisze:
    bartc pisze:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is
    'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }
    this (T) is rather silly here - i mean its ok if you cast something but
    if no its like

    int a = (int) 20;



    logically

    x = {2,3};

    as an assigment is kinda ok

    if some told some need to have a different syntax for initialisation
    then in fact


    x = {2,3};

    more fit to assigment than initialisation and some could tke something
    other to denote nitialisation





    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Mon Nov 2 16:46:13 2026
    fir pisze:
    fir pisze:
    bartc pisze:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it
    is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }
    this (T) is rather silly here - i mean its ok if you cast something
    but if no its like

    int a = (int) 20;



    logically

    x = {2,3};

    as an assigment is kinda ok

    if some told some need to have a different syntax for initialisation
    then in fact


    x = {2,3};

    more fit to assigment than initialisation and some could tke something
    other to denote nitialisation


    lack of it i would even add to the list of top c annoyances - becouse
    indeed ts annoying..it also unlocks quite sane way of doing things in c
    as i said..it simply should be addad to c..but this c comitee is not
    much good in its decisions imo

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From David Brown@3:633/10 to All on Mon Nov 2 17:36:06 2026
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is
    'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙ T s;
    ˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available in
    C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here, making
    it into a compound literal. The expression "{ 10, 20 }" on its own
    cannot be used for assignment to "s" because the type of an expression
    must be determined from the expression alone - not from what you are
    assigning it to.

    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred). Making this work involves quite a bit of additional C++
    machinery that does not exist in C.



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From bartc@3:633/10 to All on Mon Nov 2 18:47:24 2026
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it is
    'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here, making
    it into a compound literal.˙ The expression "{ 10, 20 }" on its own
    cannot be used for assignment to "s" because the type of an expression
    must be determined from the expression alone - not from what you are assigning it to.

    I think this has been discussed recently but I can't remember the arguments.

    But people can write:

    x = 0;

    and the exact type of '0' can be determined from the type of 'x', so I
    don't see much difference.

    Plus it doesn't see to be a problem here:

    T s = {10, 20};

    What determines the type of {10, 20} in this case?


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++ machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Mon Nov 2 20:54:13 2026
    bartc pisze:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it
    is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available
    in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on its
    own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so I
    don't see much difference.

    Plus it doesn't see to be a problem here:

    ˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    you once asked if i want some of what i talk someone should implement etc...

    in fact i dont care those are some observations, and i may wait
    implement it myself but also someone (espe like c comitee) could
    implement it imo (some of it those closer to c)

    but it geerally seems this comitee is don bad work

    ythse some basic changes and obvious exchanges like hera baove
    or this that 'bhdbdh' would work they should do

    i think what not breaks compatibility and what is really sane and not
    rises special objections they should do

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Mon Nov 2 20:56:03 2026
    fir pisze:
    bartc pisze:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied) >>>>>
    with this {0,0,1} at least c has a basic of ths vector/tupple support >>>>> and this 'native' support is quite standable..so its very weird it
    is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available
    in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on
    its own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so I
    don't see much difference.

    Plus it doesn't see to be a problem here:

    ˙˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    you once asked if i want some of what i talk someone should implement
    etc...

    in fact i dont care those are some observations, and i may wait
    implement it myself but also someone (espe like c comitee) could
    implement it imo (some of it those closer to c)

    but it geerally seems this comitee is don bad work

    ythse some basic changes and obvious exchanges like hera baove
    or this that 'bhdbdh' would work they should do

    i think what not breaks compatibility and what is really sane and not
    rises special objections they should do

    im not even specially interested in what not breaks this compatibility
    with old sources but even thse major changes (like definitions being
    seen down in code) they could also add



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From David Brown@3:633/10 to All on Mon Nov 2 21:29:16 2026
    On 02/11/2026 19:47, bartc wrote:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied)

    with this {0,0,1} at least c has a basic of ths vector/tupple support
    and this 'native' support is quite standable..so its very weird it
    is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available
    in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on its
    own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so I
    don't see much difference.

    No, 0 is of type "int". As an integer constant expression with value 0,
    it can be /converted/ to any pointer type, giving a null pointer
    constant. It can also be converted to a float, or other arithmetic
    type. But as it stands, "0" has a fixed type - "int".


    Plus it doesn't see to be a problem here:

    ˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    That is initialisation, which is a different matter. Critically, it is
    a declaration and not an expression - it does not produce a value that
    can itself be used.

    (I'd be happy if assignment were a particular kind of statement, rather
    than an expression. I'd be happy if "s = { 10, 20 };" worked in C. It doesn't work in C, however - this is one of many reasons why I usually
    work in C++ rather than C.)


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    std::initializer_list is a template. Making templates work in C would
    require so many changes that it would be pointless - just use C++.

    Maybe the assignment could be made to work in other ways that could be
    more feasible to add to C. It's not something I have thought through in detail.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Janis Papanagnou@3:633/10 to All on Mon Nov 2 21:39:36 2026
    On 2026-11-02 21:29, David Brown wrote:

    [...] - just use C++.

    +1

    ("Symbolic pun" intended; sorry, could not resist.)

    Janis

    [...]


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Keith Thompson@3:633/10 to All on Mon Nov 2 14:52:37 2026
    David Brown <david.brown@hesbynett.no> writes:
    [...]
    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal. The expression "{ 10, 20 }" on its
    own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    In fact `{ 10, 20 }` is not an expression at all. It's a valid
    initializer and it can be part of an expression (a compound literal).

    --
    Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
    void Void(void) { Void(); } /* The recursive call of the void */

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From bartc@3:633/10 to All on Mon Nov 2 22:58:03 2026
    On 02/11/2026 20:29, David Brown wrote:
    On 02/11/2026 19:47, bartc wrote:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be
    stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied) >>>>>
    with this {0,0,1} at least c has a basic of ths vector/tupple support >>>>> and this 'native' support is quite standable..so its very weird it
    is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already available
    in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on
    its own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so I
    don't see much difference.

    No, 0 is of type "int".˙ As an integer constant expression with value 0,
    it can be /converted/ to any pointer type, giving a null pointer
    constant.˙ It can also be converted to a float, or other arithmetic
    type.˙ But as it stands, "0" has a fixed type - "int".

    Same thing. Here there is a tuple of two ints. (The syntax might be problematical in C outside of initialisation or following a cast.)

    Such tuples can be used without having to expose them in the language.
    They already occur here: (T){10, 20}.





    Plus it doesn't see to be a problem here:

    ˙˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    That is initialisation, which is a different matter.˙ Critically, it is
    a declaration and not an expression - it does not produce a value that
    can itself be used.

    But it manages to figure out the types. (Even if it is not fussy about
    nested {} grouping.)


    (I'd be happy if assignment were a particular kind of statement, rather
    than an expression.˙ I'd be happy if "s = { 10, 20 };" worked in C.˙ It doesn't work in C, however - this is one of many reasons why I usually
    work in C++ rather than C.)

    OK. Another reason why such things are not a priority in C. You either
    use workarounds with macros or switch to a sister language which has
    evolved much more dramatically.


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated as
    type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    std::initializer_list is a template.˙ Making templates work in C would require so many changes that it would be pointless - just use C++.

    Maybe the assignment could be made to work in other ways that could be
    more feasible to add to C.˙ It's not something I have thought through in detail.

    (It seems to work in my language, provided the expression isn't 'open'.
    So 'a := (x, y)' will work, as the LHS helps refine the type, but not
    'print (x, y)' because the types have not been pinned down.)



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From David Brown@3:633/10 to All on Tue Nov 3 11:09:21 2026
    On 02/11/2026 23:58, bartc wrote:
    On 02/11/2026 20:29, David Brown wrote:
    On 02/11/2026 19:47, bartc wrote:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be >>>>>> stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied) >>>>>>
    with this {0,0,1} at least c has a basic of ths vector/tupple support >>>>>> and this 'native' support is quite standable..so its very weird it >>>>>> is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already
    available in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on
    its own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so
    I don't see much difference.

    No, 0 is of type "int".˙ As an integer constant expression with value
    0, it can be /converted/ to any pointer type, giving a null pointer
    constant.˙ It can also be converted to a float, or other arithmetic
    type.˙ But as it stands, "0" has a fixed type - "int".

    Same thing. Here there is a tuple of two ints. (The syntax might be problematical in C outside of initialisation or following a cast.)

    In C, it is not a "tuple of two ints". C has no concept of "tuple".
    This is simply the syntax used for multiple initialisers. That is where
    the limitation lies - there is no way in C to have a kind of on-the-fly structure or array type. (Some languages have it, C does not.) When
    you write "(T) { 10, 20 }", you are /not/ writing a cast or any other
    kind of type conversion. You are using the particular syntax for a
    "compound literal". The syntax is obviously picked to be similar to a
    cast, and similar to an initialisation, but it is /not/ a cast. It is creating a temporary object of type T that is initialised with the
    values 10 and 20.


    Such tuples can be used without having to expose them in the language.
    They already occur here: (T){10, 20}.





    Plus it doesn't see to be a problem here:

    ˙˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    That is initialisation, which is a different matter.˙ Critically, it
    is a declaration and not an expression - it does not produce a value
    that can itself be used.

    But it manages to figure out the types. (Even if it is not fussy about nested {} grouping.)

    The types relevant to initialisation come from the initialised type.
    When you write "T s = { 10, 20 };", you do not have an object with value
    "{ 10, 20 }" of some automatic type that is then assigned to "s". What
    you have is a short-cut syntax for :

    T s;
    s.x = 10;
    s.y = 20;

    "{ 10, 20 }" does not exist on its own, it does not have a type, it is
    not a "tuple", there are no casts or conversions, and it is not assigned
    to "s" or anything else.



    (I'd be happy if assignment were a particular kind of statement,
    rather than an expression.˙ I'd be happy if "s = { 10, 20 };" worked
    in C.˙ It doesn't work in C, however - this is one of many reasons why
    I usually work in C++ rather than C.)

    OK. Another reason why such things are not a priority in C. You either
    use workarounds with macros or switch to a sister language which has
    evolved much more dramatically.

    That paragraph would make sense if I were the benevolent dictator for
    life for the C programming language. I am not.

    C++ has many features that C does not. It also has many complications.
    These are tradeoffs, and for much of the work I do, C++ is usually a
    better choice for me. (For other things I do, Python is usually a
    better choice than either C or C++. And for some things, C is a better choice.) It is undoubtedly the case that C++ has seen many more
    dramatic changes than C. It is also undoubtedly the case that much of
    the complication of C++ as a language is because of features being
    retrofitted into a language that did not support them originally.



    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated
    as type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    std::initializer_list is a template.˙ Making templates work in C would
    require so many changes that it would be pointless - just use C++.

    Maybe the assignment could be made to work in other ways that could be
    more feasible to add to C.˙ It's not something I have thought through
    in detail.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 13:19:02 2026
    bartc pisze:
    On 02/11/2026 20:29, David Brown wrote:
    On 02/11/2026 19:47, bartc wrote:
    On 02/11/2026 16:36, David Brown wrote:
    On 01/11/2026 14:41, bartc wrote:
    On 01/11/2026 13:32, fir wrote:
    it is maybe banal but sometimes banal remarks also maybe should be >>>>>> stated as i dont remember if i even was posting on that

    the fact stat some cannot assign a structure like
    this

    s = {x,y};

    seems rather silly (especially as structures can be assigned/copied) >>>>>>
    with this {0,0,1} at least c has a basic of ths vector/tupple support >>>>>> and this 'native' support is quite standable..so its very weird it >>>>>> is 'blocked' from usage


    #include <stdio.h>

    typedef struct {int x,y;} T;

    int main(void) {
    ˙˙˙˙ T s;
    ˙˙˙˙ s = (T){10,20};
    }


    As often seems to be the case, things Fir wants are already
    available in C++.

    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal.˙ The expression "{ 10, 20 }" on
    its own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    I think this has been discussed recently but I can't remember the
    arguments.

    But people can write:

    ˙˙˙ x = 0;

    and the exact type of '0' can be determined from the type of 'x', so
    I don't see much difference.

    No, 0 is of type "int".˙ As an integer constant expression with value
    0, it can be /converted/ to any pointer type, giving a null pointer
    constant.˙ It can also be converted to a float, or other arithmetic
    type.˙ But as it stands, "0" has a fixed type - "int".

    Same thing. Here there is a tuple of two ints. (The syntax might be problematical in C outside of initialisation or following a cast.)

    Such tuples can be used without having to expose them in the language.
    They already occur here: (T){10, 20}.





    Plus it doesn't see to be a problem here:

    ˙˙ T s = {10, 20};

    What determines the type of {10, 20} in this case?


    That is initialisation, which is a different matter.˙ Critically, it
    is a declaration and not an expression - it does not produce a value
    that can itself be used.

    But it manages to figure out the types. (Even if it is not fussy about nested {} grouping.)


    (I'd be happy if assignment were a particular kind of statement,
    rather than an expression.˙ I'd be happy if "s = { 10, 20 };" worked
    in C.˙ It doesn't work in C, however - this is one of many reasons why
    I usually work in C++ rather than C.)

    OK. Another reason why such things are not a priority in C. You either
    use workarounds with macros or switch to a sister language which has
    evolved much more dramatically.


    In C++, "s = { 10, 20 };" is valid because "{ 10, 20 }" is treated
    as type std::initializer_list<int> (the "int" part is automatically
    inferred).˙ Making this work involves quite a bit of additional C++
    machinery that does not exist in C.
    In the language or compiler? Because machinery can be added to C too.


    std::initializer_list is a template.˙ Making templates work in C would
    require so many changes that it would be pointless - just use C++.

    Maybe the assignment could be made to work in other ways that could be
    more feasible to add to C.˙ It's not something I have thought through
    in detail.

    (It seems to work in my language, provided the expression isn't 'open'.
    So 'a := (x, y)' will work, as the LHS helps refine the type, but not
    'print (x, y)' because the types have not been pinned down.)



    [legal note:
    imo if you take some ideas from me you should credit it (its like "i
    seen it from the fir "or "as fir said/showed") ..im here speaking
    generally becouse (i cant find as a copyright police what people took
    for me and what by the chance no) i know people are not much honest
    anyway..yet this above is quite not so totally unusual observation
    (though many undable to dat obeservations) but speaking generally]


    what this {2,7} is is generally quite clear its a value of 'snonymous structure' of 2 ints

    same way {1,2,"assas", 8.9} is value of anonymous structure of type int
    int char* double (or eventually float)

    no any problem with that imo

    this btw shows that strict c rules most probably shows that

    {{1,2},{2,3}} is a structure of structures and if some need to hools
    a pointer th should probably use this & sign

    {&{1,2},&{2,3}} //structure of two pointers to 2 structures that are initialised and lays somewgere in a ram so there are 3 blocks of data
    that may be separate in ram

    not saying this & here is good , but imo present rules of c would
    lead to that



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 13:29:59 2026
    Keith Thompson pisze:
    David Brown <david.brown@hesbynett.no> writes:
    [...]
    In C, you need to give a type to "{ 10, 20 }" - as you did here,
    making it into a compound literal. The expression "{ 10, 20 }" on its
    own cannot be used for assignment to "s" because the type of an
    expression must be determined from the expression alone - not from
    what you are assigning it to.

    In fact `{ 10, 20 }` is not an expression at all. It's a valid
    initializer and it can be part of an expression (a compound literal).

    thse people DB and KT are like c beaurocrates where I and BC look on ths
    ame things as like a theoretical c view

    so its theoretical c and beaurocratic c meet up
    (ofc being a c beaurocrate is not bad, its even quite good imo...
    but doin c thery is also very good imo..

    so in that context {10,20} is a thing in theoretical c and its not only
    this what is in beaurocratic c

    NOTE what is true, c is not only what is in beurocratic areas its also
    quite theoretical concept/being

    (this way i dont like people talking what is not a beaurocratic c is not
    a c - it often is deeper theoretial c, though there is also some border
    inside but not all concept could be named deeper c/theoretical c i
    guess, but some can)

    (which can and which cant is an other story)

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 14:29:59 2026
    bartc pisze:
    (It seems to work in my language, provided the expression isn't 'open'.
    So 'a := (x, y)' will work, as the LHS helps refine the type, but not
    'print (x, y)' because the types have not been pinned down.)

    i facy the usage in functions is probably the main (or main aside other
    mains) usage of it

    like

    foo({x,y,z}) //for foo(float3 x)

    instead of
    float3 x = {23,4,4};
    foo(x);

    very handy same for

    foo(&{3,4,d}) //for foo(float3* x)

    maybe even handier

    probabbly also to allow skipping return values in expressions


    zoo({x,y,} foo({2,3,4}))

    foo terurns int-int-int but zoo takes only 2 ints

    also incidentally seems it allows to return values rightside


    zoo( foo({2,3,4}) {x,y,} )

    which is very worth rethinking


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 14:42:04 2026
    fir pisze:

    zoo({x,y,} foo({2,3,4}))

    foo terurns int-int-int but zoo takes only 2 ints


    it shows some interesting thing like

    x = foo() this equal could be said is wrong (becouse it is not
    quite assigment in general its like adressing x more than assigning)

    becouse here it could be

    {x} foo()

    or

    foo(){x}


    (it also may be kipped as anonymous as it is often skipped )

    its also more compatible as i asid in returning more values


    buck then i was thinking about shipping {} and use this pure form
    like x y foo a b c but it seem harder to think so for some stage this
    very classic {a,b,c} is quite good to do some insight using it



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From bartc@3:633/10 to All on Tue Nov 3 14:07:32 2026
    On 03/11/2026 12:19, fir wrote:
    bartc pisze:

    On 01/11/2026 13:32, fir wrote:

    the fact stat some cannot assign a structure like
    this

    s = {x,y};
    (It seems to work in my language, provided the expression isn't
    'open'. So 'a := (x, y)' will work, as the LHS helps refine the type,
    but not 'print (x, y)' because the types have not been pinned down.)



    [legal note:
    imo if you take some ideas from me you should credit it (its like "i
    seen it from the fir "or "as fir said/showed") ..im here speaking
    generally becouse (i cant find as a copyright police what people took
    for me and what by the chance no)

    You think I stole this 'feature' from your recent post?

    In the early 1990s I could write code like this in my scripting language:

    p := (100, 200, 300)
    q := (20, 30, 40)
    m := (p + q) / 2

    println m # (60.00, 115.00, 170.00)

    It was a 3D graphics application.

    In my systems language, it worked like this, and from the 1980s:

    record point =
    int x, y
    end

    point p = (100, 200) # RHS must be compile-time expr

    But general assignments, outside of initialisation and with runtime expressions, were not implemented until within the last decade (I can't remember exactly as I rarely use the feature, but it was more than two
    days ago). That means being able to do this:

    p := (x+1, y)

    Such an ability is a natural consequence of the syntax which has always
    been able to express it. It's just a question of (1) whether it has
    useful and desirable semantics; (2) someone has bothered to implement it.

    So it has been a thing since the 1980s, and I eventually got around to
    it some decades later.

    Notice also that it uses round brackets and not braces.


    i know people are not much honest
    anyway..yet this above is quite not so totally unusual observation
    (though many undable to dat obeservations) but speaking generally]

    Yeah, nobody has thought of having a constructor term like (a, b, c) in
    a PL before you brought it up! Not even in Lisp.

    Anyway, DB mentions that C++ has it in the form of {a, b, c}.

    same way {1,2,"assas", 8.9} is value of anonymous structure of type int
    int char* double (or eventually float)

    no any problem with that imo

    How do you access the elements?



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 15:45:10 2026
    bartc pisze:
    On 03/11/2026 12:19, fir wrote:
    bartc pisze:

    On 01/11/2026 13:32, fir wrote:

    the fact stat some cannot assign a structure like
    this

    s = {x,y};
    (It seems to work in my language, provided the expression isn't
    'open'. So 'a := (x, y)' will work, as the LHS helps refine the type,
    but not 'print (x, y)' because the types have not been pinned down.)



    [legal note:
    imo if you take some ideas from me you should credit it (its like "i
    seen it from the fir "or "as fir said/showed") ..im here speaking
    generally becouse (i cant find as a copyright police what people took
    for me and what by the chance no)

    You think I stole this 'feature' from your recent post?

    In the early 1990s I could write code like this in my scripting language:

    ˙˙˙ p := (100, 200, 300)
    ˙˙˙ q := (20, 30, 40)
    ˙˙˙ m := (p + q) / 2


    wel this is not related..this is not by visual resemblances im talkin
    about - but there are some quite deeper observations that i originated
    and i know people are generally not honest but for some king of
    historical truth this shpould be kept


    in this case its somewhat "little" remarks here and its also not about
    being stolen coz its free its more like not keeping honesty if things
    come form my observations not from other source

    what you say here is not related its not a concept of c and what i was
    sain about is strictly in c context (and has may qualities of this
    context just with some extension)

    if you would talk here on tuples in python or c++ is totally different thing



    ˙˙˙ println m˙˙˙˙˙˙˙˙˙˙ # (60.00, 115.00, 170.00)

    It was a 3D graphics application.

    In my systems language, it worked like this, and from the 1980s:

    ˙˙ record point =
    ˙˙˙˙˙˙ int x, y
    ˙˙ end

    ˙˙ point p = (100, 200)˙˙˙˙˙˙˙˙ # RHS must be compile-time expr

    But general assignments, outside of initialisation and with runtime expressions, were not implemented until within the last decade (I can't remember exactly as I rarely use the feature, but it was more than two
    days ago). That means being able to do this:

    ˙˙ p := (x+1, y)

    Such an ability is a natural consequence of the syntax which has always
    been able to express it. It's just a question of (1) whether it has
    useful and desirable semantics; (2) someone has bothered to implement it.

    So it has been a thing since the 1980s, and I eventually got around to
    it some decades later.

    Notice also that it uses round brackets and not braces.


    i know people are not much honest
    anyway..yet this above is quite not so totally unusual observation
    (though many undable to dat obeservations) but speaking generally]

    Yeah, nobody has thought of having a constructor term like (a, b, c) in
    a PL before you brought it up! Not even in Lisp.

    Anyway, DB mentions that C++ has it in the form of {a, b, c}.

    same way {1,2,"assas", 8.9} is value of anonymous structure of type
    int int char* double (or eventually float)

    no any problem with that imo

    How do you access the elements?




    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 15:54:24 2026
    bartc pisze:
    On 03/11/2026 12:19, fir wrote:
    bartc pisze:

    On 01/11/2026 13:32, fir wrote:

    the fact stat some cannot assign a structure like
    this

    s = {x,y};
    (It seems to work in my language, provided the expression isn't
    'open'. So 'a := (x, y)' will work, as the LHS helps refine the type,
    but not 'print (x, y)' because the types have not been pinned down.)



    [legal note:
    imo if you take some ideas from me you should credit it (its like "i
    seen it from the fir "or "as fir said/showed") ..im here speaking
    generally becouse (i cant find as a copyright police what people took
    for me and what by the chance no)

    You think I stole this 'feature' from your recent post?

    In the early 1990s I could write code like this in my scripting language:

    ˙˙˙ p := (100, 200, 300)
    ˙˙˙ q := (20, 30, 40)
    ˙˙˙ m := (p + q) / 2

    ˙˙˙ println m˙˙˙˙˙˙˙˙˙˙ # (60.00, 115.00, 170.00)

    It was a 3D graphics application.

    In my systems language, it worked like this, and from the 1980s:

    ˙˙ record point =
    ˙˙˙˙˙˙ int x, y
    ˙˙ end

    ˙˙ point p = (100, 200)˙˙˙˙˙˙˙˙ # RHS must be compile-time expr

    But general assignments, outside of initialisation and with runtime expressions, were not implemented until within the last decade (I can't remember exactly as I rarely use the feature, but it was more than two
    days ago). That means being able to do this:

    ˙˙ p := (x+1, y)

    Such an ability is a natural consequence of the syntax which has always
    been able to express it. It's just a question of (1) whether it has
    useful and desirable semantics; (2) someone has bothered to implement it.

    So it has been a thing since the 1980s, and I eventually got around to
    it some decades later.

    Notice also that it uses round brackets and not braces.


    i know people are not much honest
    anyway..yet this above is quite not so totally unusual observation
    (though many undable to dat obeservations) but speaking generally]

    Yeah, nobody has thought of having a constructor term like (a, b, c) in
    a PL before you brought it up! Not even in Lisp.

    Anyway, DB mentions that C++ has it in the form of {a, b, c}.

    same way {1,2,"assas", 8.9} is value of anonymous structure of type
    int int char* double (or eventually float)

    no any problem with that imo

    How do you access the elements?

    so if youre talkin about tuples in python its not that think im talkin
    about..
    i overally was speaking more general here

    here for example idea to use a = {2,3} (like it is in normal c )
    its quite a public domain and i wouldnt say i want to be credited as an
    owner of this idea, but such things generally should be credited if
    they are follows to some observations.. so im not talking about "owning"
    but much more slight thing of bein credited in some more like "paper"
    way of mentioning something

    ho do you acces the elements? you dont you assign it to some variable
    then acces the variable..


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 16:09:02 2026
    fir pisze:
    fir pisze:

    zoo({x,y,} foo({2,3,4}))

    foo terurns int-int-int but zoo takes only 2 ints


    it shows some interesting thing like

    x = foo() this equal could be said is wrong (becouse it is not
    quite assigment in general its like adressing x more than assigning)

    becouse here it could be

    {x} foo()

    or

    ˙foo(){x}


    i dont know it this above is in fact not more basic than this leftside one

    generally some coud say that calling coud work both left and right
    then () would be operator of taking ad {} of returning

    (3,4) add {c} //add 3 yo 4 and put it to c

    or for both sides

    (2) add (3) {c}

    i dont know if it has sense but something could be searched here
    (as to potential usability)




    (it also may be kipped as anonymous as it is often skipped )

    its also more compatible as i asid in returning more values


    buck then i was thinking about shipping {} and use this pure form
    like x y foo a b c but it seem harder to think so for some stage this
    very classic {a,b,c} is quite good to do some insight using it




    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 16:18:53 2026
    fir pisze:
    fir pisze:
    fir pisze:

    zoo({x,y,} foo({2,3,4}))

    foo terurns int-int-int but zoo takes only 2 ints


    it shows some interesting thing like

    x = foo() this equal could be said is wrong (becouse it is not
    quite assigment in general its like adressing x more than assigning)

    becouse here it could be

    {x} foo()

    or

    ˙˙foo(){x}


    i dont know it this above is in fact not more basic than this leftside one

    generally some coud say that calling coud work both left and right
    then () would be operator of taking ad {} of returning

    (3,4) add˙ {c} //add 3 yo 4 and put it to c

    or for both sides

    (2) add (3) {c}


    a sto "pure form" (or normally speaking pure form) overally it seems
    that those () {} can be ommited in call when function has very hardcoded signature, so eventually you may add some in definition to hardcode such signature

    (int a) (int b) foo [int x]
    {
    x = a + b
    }


    than

    2 3 add b

    is know what mean

    maybe this pure form is in fact better becouse its clarity is appealing










    i dont know if it has sense but something could be searched here
    (as to potential usability)




    (it also may be kipped as anonymous as it is often skipped )

    its also more compatible as i asid in returning more values


    buck then i was thinking about shipping {} and use this pure form
    like x y foo a b c but it seem harder to think so for some stage this
    very classic {a,b,c} is quite good to do some insight using it





    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 16:38:00 2026
    fir pisze:
    fir pisze:
    fir pisze:
    fir pisze:

    zoo({x,y,} foo({2,3,4}))

    foo terurns int-int-int but zoo takes only 2 ints


    it shows some interesting thing like

    x = foo() this equal could be said is wrong (becouse it is not
    quite assigment in general its like adressing x more than assigning)

    becouse here it could be

    {x} foo()

    or

    ˙˙foo(){x}


    i dont know it this above is in fact not more basic than this leftside
    one

    generally some coud say that calling coud work both left and right
    then () would be operator of taking ad {} of returning

    (3,4) add˙ {c} //add 3 yo 4 and put it to c

    or for both sides

    (2) add (3) {c}


    a sto "pure form" (or normally speaking pure form) overally it seems
    that those () {} can be ommited in call when function has very hardcoded signature, so eventually you may add some in definition to hardcode such signature

    (int a) (int b) foo [int x]
    {
    ˙˙ x = a + b
    }


    some question arise

    becouse there are option to treat function as a structure with value
    or using this syntax to adres outcoming value

    (int a) + (int b) {int x = a+b }

    (int a) foo (int b) { int x = (a+b)/2, int y = (a-b)/2 }

    here basic seem this structural

    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    there is also question if they should be tied/blend together some way

    i dont know at the moment - though question is kinda interesting









    than

    2 3 add b

    is know what mean

    maybe this pure form is in fact better becouse its clarity is appealing










    i dont know if it has sense but something could be searched here
    (as to potential usability)




    (it also may be kipped as anonymous as it is often skipped )

    its also more compatible as i asid in returning more values


    buck then i was thinking about shipping {} and use this pure form
    like x y foo a b c but it seem harder to think so for some stage this
    very classic {a,b,c} is quite good to do some insight using it






    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 16:48:42 2026
    bartc pisze:
    On 03/11/2026 12:19, fir wrote:
    bartc pisze:

    On 01/11/2026 13:32, fir wrote:

    the fact stat some cannot assign a structure like
    this

    s = {x,y};
    (It seems to work in my language, provided the expression isn't
    'open'. So 'a := (x, y)' will work, as the LHS helps refine the type,
    but not 'print (x, y)' because the types have not been pinned down.)



    [legal note:
    imo if you take some ideas from me you should credit it (its like "i
    seen it from the fir "or "as fir said/showed") ..im here speaking
    generally becouse (i cant find as a copyright police what people took
    for me and what by the chance no)

    You think I stole this 'feature' from your recent post?

    In the early 1990s I could write code like this in my scripting language:

    ˙˙˙ p := (100, 200, 300)
    ˙˙˙ q := (20, 30, 40)
    ˙˙˙ m := (p + q) / 2

    ˙˙˙ println m˙˙˙˙˙˙˙˙˙˙ # (60.00, 115.00, 170.00)

    It was a 3D graphics application.

    In my systems language, it worked like this, and from the 1980s:

    ˙˙ record point =
    ˙˙˙˙˙˙ int x, y
    ˙˙ end

    ˙˙ point p = (100, 200)˙˙˙˙˙˙˙˙ # RHS must be compile-time expr

    But general assignments, outside of initialisation and with runtime expressions, were not implemented until within the last decade (I can't remember exactly as I rarely use the feature, but it was more than two
    days ago). That means being able to do this:

    ˙˙ p := (x+1, y)

    Such an ability is a natural consequence of the syntax which has always
    been able to express it. It's just a question of (1) whether it has
    useful and desirable semantics; (2) someone has bothered to implement it.

    So it has been a thing since the 1980s, and I eventually got around to
    it some decades later.

    Notice also that it uses round brackets and not braces.


    i know people are not much honest
    anyway..yet this above is quite not so totally unusual observation
    (though many undable to dat obeservations) but speaking generally]

    Yeah, nobody has thought of having a constructor term like (a, b, c) in
    a PL before you brought it up! Not even in Lisp.

    Anyway, DB mentions that C++ has it in the form of {a, b, c}.

    same way {1,2,"assas", 8.9} is value of anonymous structure of type
    int int char* double (or eventually float)

    no any problem with that imo

    How do you access the elements?

    note i notice you are like halfly wanted to be foaming foam man

    its like those people form spider-man (like sand man etc) or x-man

    so would be foam-man here

    (though i suggest not to foam, adding it just becouse its x-man and
    humour values)


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 16:55:32 2026
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}

    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet






    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 17:06:26 2026
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}


    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet







    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From bartc@3:633/10 to All on Tue Nov 3 16:26:36 2026
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?




    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at random
    in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a forum
    as this anyway?

    Work it out privately and when you have something worth discussing then
    maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles away.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 17:34:02 2026
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not some
    fancy imo) functions have properties of structures and structures have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand(); rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand stright










    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at random
    in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a forum
    as this anyway?

    Work it out privately and when you have something worth discussing then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are anywhere in this ballpark. Currently your musings are a million miles away.


    it is very worth discussing its just above your level..so i csuggest get
    to work and learn up


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 17:47:12 2026
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not some fancy imo) functions have properties of structures and structures have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand stright










    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a forum
    as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles
    away.


    it is very worth discussing its just above your level..so i csuggest get
    to work and learn up

    instead of foaming...



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 17:54:02 2026
    fir pisze:
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not
    some fancy imo) functions have properties of structures and structures
    have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand
    stright










    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a
    forum as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles
    away.


    it is very worth discussing its just above your level..so i csuggest
    get to work and learn up

    instead of foaming...


    note btw you often mention this your language or maybe even pack of
    languages and i personally dont see a problem there...somethimes i read
    it sometimes not..you show your design choices its ok

    i think hovever you should name them and use those names - yet better
    give it to download and use..becouse if yu not use names and you get
    some its too easy to mees it all up

    imegine some would not name pythoon or java only said "in my language"
    it would be a mess

    (in my case its diffetrent becous eits not on language i mostly talk
    about c solutions (separate language solutio on ground of hard c) than
    in more theretical but all this solutions should be in a way considered separatelly)

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Tue Nov 3 22:08:37 2026
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not some fancy imo) functions have properties of structures and structures have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand stright


    overally i remember i was not quite sure how to define operators in c
    but its probably like this:

    some(int a) //some module
    {
    x++, y +=a, z=a //some code
    int x y z // fields
    foo (int x) {} //function definition
    !(int x) {printf("%d", x)} //operator definition
    (int x) %% (int y) {} //operator definition

    }

    //usage

    some(4) //calls code
    some //has value of x y z
    foo(2) //calls foo
    !23 //printfs 23
    6%%3 //calls operator code


    so its ratcher clear, some may think if to not omit some ()
    in this definition here but for clarity here its stays


    in fact it dont seem tu be much doubtfull at least at some level
    here and it showed most strightforward

    there is no differentiation on read only and readwrite or write only
    arguments but in some way this is not needed as code
    inside function or operator sjhows if it is read written or read and written

    if someone would like to define basic operators liek + *
    its maybe also possible but there would need to be added some
    hook into assembly













    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a forum
    as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles
    away.


    it is very worth discussing its just above your level..so i csuggest get
    to work and learn up



    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Wed Nov 4 14:14:53 2026
    fir pisze:
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not
    some fancy imo) functions have properties of structures and structures
    have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand
    stright


    overally i remember i was not quite sure how to define operators in c
    but its probably like this:

    some(int a)˙˙˙˙˙˙ //some module
    {
    ˙x++, y +=a, z=a˙˙˙˙˙˙˙˙˙˙˙˙˙ //some code
    ˙int x y z˙ // fields
    ˙foo (int x) {} //function definition
    ˙!(int x) {printf("%d", x)} //operator definition
    ˙(int x) %% (int y) {} //operator definition

    }


    note (though i already was talkin on it i will yet repeat it)

    this above may seem obvious - after you seen it - BUT BEFORE it was
    far from obvious - how far? you would take a long route with some non
    binary decisions and observations..where this route is more like 50
    important decisions/observations than 5 and thoce decisions are also not binary (though i dont know how to some could express it as a number but
    for some ilustration if some could name this number by M and this
    decison route length by 50 then the final result was like one from 50^M

    (this is ofc some simplification but it imo ilustrates something)

    so as to "stealing" its very easy to steal this - it is also very easy
    to say its obvious and ignoring the long route here (and if something is
    eassy i may suspect people could do that eventually (i hope no but theoretically its possible - unfortunatelly..stealing it could involve
    lie'ing (laying?) so maybe it will not happen - besides not much people
    are interested in that and maybe its good as im still working on that
    (though some work or at least "intermediate work" here may be also seen
    as a complete)

    //usage

    some(4) //calls code
    some˙ //has value of x y z
    foo(2) //calls foo
    !23 //printfs 23
    6%%3 //calls operator code


    so its ratcher clear, some may think if to not omit some ()
    in this definition here but for clarity here its stays


    in fact it dont seem tu be much doubtfull at least at some level
    here and it showed most strightforward

    there is no differentiation on read only and readwrite or write only arguments but in some way this is not needed as code
    inside function or operator sjhows if it is read written or read and
    written

    if someone would like to define basic operators liek + *
    its maybe also possible but there would need to be added some
    hook into assembly













    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a
    forum as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles
    away.


    it is very worth discussing its just above your level..so i csuggest
    get to work and learn up




    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Wed Nov 4 14:27:41 2026
    fir pisze:
    fir pisze:
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not
    some fancy imo) functions have properties of structures and
    structures have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand
    stright


    overally i remember i was not quite sure how to define operators in c
    but its probably like this:

    some(int a)˙˙˙˙˙˙ //some module
    {
    ˙˙x++, y +=a, z=a˙˙˙˙˙˙˙˙˙˙˙˙˙ //some code
    ˙˙int x y z˙ // fields
    ˙˙foo (int x) {} //function definition
    ˙˙!(int x) {printf("%d", x)} //operator definition
    ˙˙(int x) %% (int y) {} //operator definition

    }


    note (though i already was talkin on it i will yet repeat it)

    this above may seem obvious - after you seen it - BUT BEFORE it was
    far from obvious - how far? you would take a long route with some non
    binary decisions and observations..where this route is more like 50
    important decisions/observations than 5 and thoce decisions are also not binary (though i dont know how to some could express it as a number but
    for some ilustration if some could name this number by M and this
    decison route length by 50 then the final result was like one from 50^M

    (this is ofc some simplification but it imo ilustrates something)

    so as to "stealing" its very easy to steal this - it is also very easy
    to say its obvious and ignoring the long route here (and if something is eassy i may suspect people could do that eventually (i hope no but theoretically its possible - unfortunatelly..stealing it could involve lie'ing (laying?) so maybe it will not happen - besides not much people
    are interested in that and maybe its good as im still working on that
    (though some work or at least "intermediate work" here may be also seen
    as a complete)



    note if i would like to 'officially' publish it imo its better to finish
    it (at least some layer of it) and then get some time ('vacatio legis'
    some could say) to toy with that being somewhat convinced it has no
    changes or additions needed..so its good to have this time
    (and its probably seem like i need yet few years maybe)


    overally what started as a series of some extensions that "would be good
    to have in c" (those more like havin returned 2 or mole values, acces to static fields of functions, maiing variables stack explicite and so on)
    it shoved evolved into this fractal 'hipermodularity'


    it was somewhat unexpected i could say but it oryginated as this
    observation that this fractal hipermodularity is like consequence in c
    so its ok

    it makes those 'solutions' be packed like some new 'paradigm' or what to
    call it so it makes it like more 'closed' here, and its also ok
    (becouse if it is somewhat 'closed' i may say at least at some layer its 'finished' othervise if having a set of loose additions i would have no
    so much rigid occastion to say so

    (old fir)

    //usage

    some(4) //calls code
    some˙ //has value of x y z
    foo(2) //calls foo
    !23 //printfs 23
    6%%3 //calls operator code


    so its ratcher clear, some may think if to not omit some ()
    in this definition here but for clarity here its stays


    in fact it dont seem tu be much doubtfull at least at some level
    here and it showed most strightforward

    there is no differentiation on read only and readwrite or write only
    arguments but in some way this is not needed as code
    inside function or operator sjhows if it is read written or read and
    written

    if someone would like to define basic operators liek + *
    its maybe also possible but there would need to be added some
    hook into assembly













    whould be probably present as modules just have its options to be >>>>>> written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty) >>>>>>
    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking >>>>>> output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a
    forum as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million
    miles away.


    it is very worth discussing its just above your level..so i csuggest
    get to work and learn up





    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Thu Nov 5 19:10:54 2026
    fir pisze:
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not
    some fancy imo) functions have properties of structures and structures
    have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand
    stright


    overally i remember i was not quite sure how to define operators in c
    but its probably like this:

    some(int a)˙˙˙˙˙˙ //some module
    {
    ˙x++, y +=a, z=a˙˙˙˙˙˙˙˙˙˙˙˙˙ //some code
    ˙int x y z˙ // fields
    ˙foo (int x) {} //function definition
    ˙!(int x) {printf("%d", x)} //operator definition
    ˙(int x) %% (int y) {} //operator definition

    }

    //usage

    some(4) //calls code
    some˙ //has value of x y z
    foo(2) //calls foo
    !23 //printfs 23
    6%%3 //calls operator code


    so its ratcher clear, some may think if to not omit some ()
    in this definition here but for clarity here its stays


    in fact it dont seem tu be much doubtfull at least at some level
    here and it showed most strightforward

    there is no differentiation on read only and readwrite or write only arguments but in some way this is not needed as code
    inside function or operator sjhows if it is read written or read and
    written

    if someone would like to define basic operators liek + *
    its maybe also possible but there would need to be added some
    hook into assembly



    it is open question how to "define" int in extended c (xc, maybe i
    should use abbreviations extended c is xc deep c is dc and so on)


    i could think about something like that at start but it needs
    more thinking and im weary today but it may be some start


    int {
    __asm_i32 value;

    (int a)=(int b)
    {
    _asm mov a b
    }


    (int a)+(int b)
    {
    int c;
    _asm mov register a
    _asm_add register b
    _asm mov c register

    }

    (int a)-(int b)
    {
    int c;
    _asm mov register a
    _asm_sub register b
    _asm mov c register
    }

    (int a)*(int b)
    {
    int c;
    _asm mov register a
    _asm_mul register b
    _asm mov c register
    }

    (int a)/(int b)
    {
    int c;
    _asm mov register a
    _asm_div register b
    _asm mov c register
    }

    }


    then

    int x = a*b+c/d-e

    would just yeild to sequential calls

    =(k,(-(/(+(*(a,b),c),d),e)))

    should it work?

    to weary to check














    whould be probably present as modules just have its options to be
    written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty)

    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking
    output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a
    forum as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million miles
    away.


    it is very worth discussing its just above your level..so i csuggest
    get to work and learn up




    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From fir@3:633/10 to All on Thu Nov 5 19:38:36 2026
    fir pisze:
    fir pisze:
    fir pisze:
    bartc pisze:
    On 03/11/2026 16:06, fir wrote:
    fir pisze:
    fir pisze:
    output one also can be defined like here

    rand (int d) [int x] { x = rand()%d}

    rand 10 x

    my hiper modular thinking i was doin back then suggest that
    both forms i mean

    rand {int value = rand()}

    rand [int value] {value = rand()}



    there is also option

    int rand { rand = rand()}

    Which means...?



    in the hipermodular approach (which is proper stright approach, not
    some fancy imo) functions have properties of structures and
    structures have properties of functions

    so if you have struct rand {int value} you may acces the rand.value
    but also instead of struct rand you could have just rand (int rand)
    so you may acces rand

    so here

    rand {int value = rand()}

    some may use int x = rand();˙ rand.value++; etc

    with this syntax

    int rand {rand = rand()}

    you may use int x = rand(); rand++;


    just ommiting this field named value but accesing this entity rand
    stright


    overally i remember i was not quite sure how to define operators in c
    but its probably like this:

    some(int a)˙˙˙˙˙˙ //some module
    {
    ˙˙x++, y +=a, z=a˙˙˙˙˙˙˙˙˙˙˙˙˙ //some code
    ˙˙int x y z˙ // fields
    ˙˙foo (int x) {} //function definition
    ˙˙!(int x) {printf("%d", x)} //operator definition
    ˙˙(int x) %% (int y) {} //operator definition

    }

    //usage

    some(4) //calls code
    some˙ //has value of x y z
    foo(2) //calls foo
    !23 //printfs 23
    6%%3 //calls operator code


    so its ratcher clear, some may think if to not omit some ()
    in this definition here but for clarity here its stays


    in fact it dont seem tu be much doubtfull at least at some level
    here and it showed most strightforward

    there is no differentiation on read only and readwrite or write only
    arguments but in some way this is not needed as code
    inside function or operator sjhows if it is read written or read and
    written

    if someone would like to define basic operators liek + *
    its maybe also possible but there would need to be added some
    hook into assembly



    it is open question how to "define" int in extended c (xc, maybe i
    should use abbreviations extended c is xc deep c is dc and so on)


    i could think about something like that at start but it needs
    more thinking and im weary today but it may be some start


    int {
    ˙˙˙˙ __asm_i32 value;

    ˙˙˙˙ (int a)=(int b)
    ˙˙˙˙ {
    ˙˙˙˙˙˙ _asm mov a b
    ˙˙˙˙ }


    soory here should be

    (int a)=(int b)
    {
    _asm mov register b
    _asm mov a register
    }



    ˙˙˙˙ (int a)+(int b)
    ˙˙˙˙ {
    ˙˙˙˙˙˙ int c;
    ˙˙˙˙˙˙ _asm mov register a
    ˙˙˙˙˙˙ _asm_add register b
    ˙˙˙˙˙˙ _asm mov c register

    ˙˙˙˙ }

    ˙˙˙˙ (int a)-(int b)
    ˙˙˙˙ {
    ˙˙˙˙˙˙ int c;
    ˙˙˙˙˙˙ _asm mov register a
    ˙˙˙˙˙˙ _asm_sub register b
    ˙˙˙˙˙˙ _asm mov c register
    ˙˙˙˙ }

    ˙˙˙˙ (int a)*(int b)
    ˙˙˙˙ {
    ˙˙˙˙˙˙ int c;
    ˙˙˙˙˙˙ _asm mov register a
    ˙˙˙˙˙˙ _asm_mul register b
    ˙˙˙˙˙˙ _asm mov c register
    ˙˙˙˙ }

    ˙˙˙˙ (int a)/(int b)
    ˙˙˙˙ {
    ˙˙˙˙˙˙ int c;
    ˙˙˙˙˙˙ _asm mov register a
    ˙˙˙˙˙˙ _asm_div register b
    ˙˙˙˙˙˙ _asm mov c register
    ˙˙˙˙ }

    }


    then

    int x = a*b+c/d-e

    would˙ just yeild to sequential calls

    =(x,(-(/(+(*(a,b),c),d),e)))

    should it work?

    to weary to check


    function calls do some 'aliasing' (name substitution so generated code
    would be

    *:
    _asm mov register a
    _asm_mul register b
    _asm mov local register
    +:
    _asm mov register local
    _asm_add register c
    _asm mov local register
    /:

    _asm mov register local
    _asm_div register d
    _asm mov local register
    -:
    _asm mov register local
    _asm_sub register e
    _asm mov local register
    =:
    _asm mov register local
    _asm mov x register
















    whould be probably present as modules just have its options to be >>>>>> written and those are two realisations of those options

    first has just ownning his ovn ram and second not (bein ram empty) >>>>>>
    now what has {} to do with it?

    hela know

    maybe it should work like a cast orr just be and option of marking >>>>>> output values?

    {X} rand
    rand {x}

    i dont know yet
    You're trying to create a language syntax like monkeys typing at
    random in the hope they'll produce some Shakespeare.

    What the hell are you doing spouting all this nonsense in such a
    forum as this anyway?

    Work it out privately and when you have something worth discussing
    then maybe post to a relevant group, if sticking with usenet.

    But I'd suggest not bothering with comp.lang.c unless your ideas are
    anywhere in this ballpark. Currently your musings are a million
    miles away.


    it is very worth discussing its just above your level..so i csuggest
    get to work and learn up





    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)