Worst ideas/features in programming languages?
Walter Bright
newshound2 at digitalmars.com
Tue Jan 4 05:40:51 UTC 2022
On 1/3/2022 6:06 PM, Timon Gehr wrote:
> On 03.01.22 10:27, Walter Bright wrote:
>> On 1/2/2022 11:42 PM, Timon Gehr wrote:
>>> And there is also this:
>>>
>>> void foo(T...)(T args){}
>>>
>>> int[2] x;
>>>
>>> foo(x); // foo!(int[2]) and foo!(int,int) would now need to be the same
>>
>> With such implicit conversions, the language would just descend into chaos. So
>> no :-)
>
> It's not an implicit conversion.
Looks like it to me!
> I am mostly trying to figure out what
> constitutes "unification" for you. (In the programming languages I built,
> `int×int` and `int^2` are literally the same type, there is subtyping, but all
> actual type conversions are explicit.)
>
> Personally, the single thing I care most about in terms of "unification" is that
> this works:
>
> void foo(int a,int b){}
> (int,int) t;
> foo(t); // ok, function expects (int,int), and (int,int) was given
>
> But *not* this:
>
> void foo((int,int) a,int b){}
>
> (int,int,int) t;
> foo(t); // error, function expects ((int,int),int), not (int,int,int)
>
> I do not care much about `is((int,int)==int[2])`, but when you say you want to
> unify tuples and static arrays, that's what I think of.
That isn't what I meant. I mean that there are easy ways to convert from one to
the other, but not implicit conversions.
More information about the Digitalmars-d
mailing list