Discussion Thread: DIP 1044--Enum Type Inference--Community Review Round 1

Johan j at j.nl
Sun Nov 20 19:11:31 UTC 2022


On Sunday, 20 November 2022 at 16:30:46 UTC, ryuukk_ wrote:
> On Sunday, 20 November 2022 at 16:14:41 UTC, Johan wrote:
>> On Sunday, 20 November 2022 at 01:00:58 UTC, deadalnix wrote:
>>> On Friday, 18 November 2022 at 15:37:31 UTC, Mike Parker 
>>> wrote:
>>>> ## Discussion Thread
>>>>
>>>> This is the discussion thread for the first round of 
>>>> Community Review of DIP 1044, "Enum Type Inference":
>>>>
>>>> https://github.com/dlang/DIPs/blob/e2ca557ab9d3e60305a37da0d5b58299e0a9de0e/DIPs/DIP1044.md
>>>>
>>>
>>> I have very simple feedback.
>>>
>>> STOP CHANGING THE GOD DAMN SYNTAX!
>>> STOP, STOP, STOP, and if you still have some doubt, STOP!
>>>
>>> Every time, it breaks a ton of tools.
>>>
>>> It's not worth it.
>>>
>>> If typing the name of the enum is too long, then just use 
>>> `with` or `alias E = 
>>> MyEnumNameThatIsTooLongAndAnoyingToType;`.
>>>
>>> These changes do not solve any actual problem. They just 
>>> break tools.
>>
>> I quite strongly agree.
>>
>> The DIP does not show any real improvements. The rationale 
>> mentions "few drawbacks" but then does not mention those 
>> actual drawbacks, so people can judge whether they are few or 
>> not.
>>
>> The DIP show this example as an improvement:
>> ```
>>     myObj.myFn($medium, $square, $undefined);
>> ```
>> Is the height medium?, the location the town square?, the 
>> shape undefined?
>> This is the "worse" version:
>> ```
>>     myObj.myFn(Size.medium, Shape.square, State.undefined);
>> ```
>>
>> Code will be _read_ much more often than it is _written_.
>> Please give a real world example where really the enum name is 
>> so long and tedious that _reading_ it is worse than without 
>> (and where `with` does not solve the problem).
>>
>> Besides tooling, also take into account someone relatively 
>> unfamiliar with D, stumbling upon a `$`. (now what the heck is 
>> this gratuitous obfuscation?)
>>
>> -Johan
>
> D has good type system

Irrelevant.

> first off, name properly your functions/types/variables

Irrelevant.

> then about the problem you are raising:

In your long email, you are not addressing at all how this DIP 
addresses any of the problems I am raising. Just mentioning more 
examples of code that are not fixed by this DIP.

>
> `TOK` enum in DMD codebase instead of `SymbolTokenType`

Thank you for this example. Search DMD codebase for `TOK`, and 
tell me how this DIP would matter for renaming `TOK` to 
`SymbolTokenType`:

```
dmd/compiler/src/dmd/cond.d:
   195      {
   196          auto tf = new TypeFunction(ParameterList(), null, 
LINK.default_, 0);
   197:         auto fd = new FuncLiteralDeclaration(loc, loc, tf, 
TOK.reserved, null);
   198          fd.fbody = s;
   199          auto fe = new FuncExp(loc, fd);
   ...
   407              auto exps = new Expressions(length);
   408
   409:             if (rangefe.op == TOK.foreach_)
   410              {
   411                  foreach (i; 0 .. length)
```

```
dmd/compiler/src/dmd/cparse.d:
   112          while (1)
   113          {
   114:             if (token.value == TOK.endOfFile)
   115              {
   116                  addDefines();   // convert #define's to 
Dsymbols
```

This DIP is not needed. `TOK` can happily be renamed to 
`SymbolTokenType`.
Let's not waste time on it.

-Johan


More information about the Digitalmars-d mailing list