Worst ideas/features in programming languages?

Timon Gehr timon.gehr at gmx.ch
Wed Jan 5 23:56:03 UTC 2022


On 1/5/22 23:42, Paul Backus wrote:
> On Wednesday, 5 January 2022 at 07:28:41 UTC, Timon Gehr wrote:
>>
>> How about something like opArgs, dealing specifically with this case? 
>> (i.e., a function call `foo(x)` with a single argument is immediately 
>> rewritten to `foo(x.opArgs)` if `x` has a member `opArgs`, and this 
>> rewrite is applied exactly once.)
> 
> This mechanism seems too powerful to me; for example, one could write 
> code like the following:
> 
>      struct S {
>          string opArgs;
>      }
> 
>      string fun(S s) { return "S overload"; }
>      string fun(string s) { return "string overload"; }
> 
>      void main() {
>          assert(fun(S()) == "S overload"); // fails
>      }
> 
> If there is to be any mechanism for automatic expansion of tuples, it 
> should probably be narrow enough to avoid enabling surprises like this one.

Why is that a surprise? You could similarly do something like:

alias S=AliasSeq!(string);


More information about the Digitalmars-d mailing list