Splitter quiz / survey

Bill Baxter wbaxter at gmail.com
Tue Apr 28 10:40:44 PDT 2009


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.

Some kind of flexible "join" function in the std lib is my preferred solution.

--bb



More information about the Digitalmars-d mailing list