Worst ideas/features in programming languages?
Tejas
notrealemail at gmail.com
Thu Jan 6 02:56:52 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.
Yeah, and what does "exactly once" mean here?
```d
struct S {
string opArgs;
}
string fun(S s) { return "S overload"; }
string fun(string s) { return "string overload"; }
void main() {
S s = S();
assert(fun(s) == "string overload"); // succeeds
assert(fun(s) == "S overload"); // this also succeeds??
}
```
More information about the Digitalmars-d
mailing list