Worst ideas/features in programming languages?

bauss jj_1337 at live.dk
Thu Jan 6 07:14:49 UTC 2022


On Wednesday, 5 January 2022 at 22:42:14 UTC, 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.

You could just make sure that the root type is always used if an 
overload is available for it.

Just like if you did:

```d
struct S {
   string opArgs;
   alias opArgs this;
}
```


More information about the Digitalmars-d mailing list