Worst ideas/features in programming languages?

Paul Backus snarwin at gmail.com
Thu Jan 6 05:58:54 UTC 2022


On Wednesday, 5 January 2022 at 23:56:03 UTC, Timon Gehr wrote:
> 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:
>> 
>> [...]
>
> Why is that a surprise? You could similarly do something like:
>
> alias S=AliasSeq!(string);

Perhaps this is a better illustration:

     struct A {
         B opArgs() { return B(); }
     }

     struct B {}

     string fun(A) { return "A"; }
     string fun(B) { return "B"; }

     void main() {
         assert(fun(A()) == "A"); // fails
     }

It's perfectly logical if you know about opArgs and have the 
definition of A in front of you, but it's extremely surprising 
and unintuitive if you don't.


More information about the Digitalmars-d mailing list