Worst ideas/features in programming languages?

Steven Schveighoffer schveiguy at gmail.com
Tue Oct 12 17:49:10 UTC 2021


On 10/12/21 12:22 PM, Paul Backus wrote:
> On Tuesday, 12 October 2021 at 13:26:34 UTC, Steven Schveighoffer wrote:
>> On 10/12/21 8:42 AM, bauss wrote:
>>>
>>> Yeah, but I would rather that it was still allowed and that the 
>>> semantics just changed.
>>>
>>> But obviously for good reason that isn't happening since it would 
>>> break existing code.
>>
>> What would you change it to?
> 
> IMO the actual answer here is to deprecate the `{ /* ... */ }` syntax 
> for function literals entirely.
> 
> Not only is it confusing in the context of `=>` lambdas, it also creates 
> a grammatical ambiguity between function literals and [block 
> statements][1], which results in bugs like [issue 21619][2].
> 
> [1]: https://dlang.org/spec/grammar.html#BlockStatement
> [2]: https://issues.dlang.org/show_bug.cgi?id=21619

It's not a terrible idea. But I think there are hacks all over the place 
that enjoy the short syntax. One that I know of is to get the parent 
scope of a location:

```d
alias parentScope = __traits(parent, {});
```

Now, changing this to `__traits(parent, (){})` probably isn't a horrible 
update to require, but this code breakage is going to seem a little 
extraneous.

-Steve


More information about the Digitalmars-d mailing list