Splitter quiz / survey

Steven Schveighoffer schveiguy at yahoo.com
Tue Apr 28 12:04:35 PDT 2009


On Tue, 28 Apr 2009 13:40:44 -0400, Bill Baxter <wbaxter at gmail.com> wrote:

> On Tue, Apr 28, 2009 at 10:23 AM, Steven Schveighoffer
> <schveiguy at yahoo.com> wrote:
>> On Tue, 28 Apr 2009 13:12:41 -0400, Robert Fraser
>> <fraserofthenight at gmail.com> wrote:
>>
>>> Steven Schveighoffer wrote:
>>>>
>>>> On Mon, 27 Apr 2009 18:36:55 -0400, Sean Kelly  
>>>> <sean at invisibleduck.org>
>>>> wrote:
>>>>
>>>>> == Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s
>>>>> article
>>>>>>
>>>>>> For the same reason, C accepts enum X { a, b, } but not ,a ,b.
>>>>>> Mechanically generating enum values is easier if each value has a
>>>>>> trailing comma.
>>>>>
>>>>> This has always seemed weird to me.  C doesn't accept a trailing  
>>>>> comma
>>>>> in function parameter lists.  I don't mind it accepting commas in  
>>>>> enum
>>>>> blocks mostly because leaving a trailing comma in multi-line blocks
>>>>> can mean a smaller diff if I want to append new elements to the block
>>>>> later, but it certainly isn't sufficient to justify the syntax IMO.
>>>>
>>>>  You know, this just reminded me of something.  What is the purpose of
>>>> allowing trailing commas in enums in C?  mostly for this:
>>>>  enum {
>>>>  val1,
>>>>  val2,
>>>> #ifdef INCLUDE_VAL_3
>>>>  val3
>>>> #endif
>>>> };
>>>>  Which would require some weird preprocessor logic for val2 if a  
>>>> trailing
>>>> comma weren't allowed
>>>>  But hasn't this behavior been *specifically* frowned upon by Walter  
>>>> due
>>>> to it's lack of maintainability?  In fact, I'd say that except for C
>>>> portability (which is becoming more and more a moot argument), we  
>>>> could get
>>>> rid of allowing the comma at the end of the last enum definition.  In  
>>>> fact,
>>>> it would discourage the undesirable behavior of versioning around  
>>>> elements
>>>> versus versioning around the enum.
>>>>  I know the argument is over for splitter, but I just thought this  
>>>> was an
>>>> interesting connection to explore.
>>>>  -Steve
>>>
>>> NO! Allowing trailing comma in stuff is great if it's being generated  
>>> by
>>> CTFE, or if it's just a long list you're adding to/removing  
>>> from/commenting
>>> parts out during development. I'd rather trailing commas be allowed in  
>>> array
>>> literals, too.
>>
>> I'm not strongly in favor of removing the commas, but your arguments  
>> aren't
>> that convincing to me.
>>
>> How hard is it to output ", x" instead of "x, " when building an enum  
>> body,
>> and then substring the result[2..$]?
>
> .. unless your list is empty in which case you must not substring the  
> result.
>

Ah yes, the extremely valuable but seldom used empty enum ;)

-Steve



More information about the Digitalmars-d mailing list