Worst ideas/features in programming languages?

Paul Backus snarwin at gmail.com
Wed Jan 5 22:42:14 UTC 2022


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.


More information about the Digitalmars-d mailing list