http://d.puremagic.com/issues/show_bug.cgi?id=9065
--- Comment #29 from Manu <turkey...@gmail.com> 2012-11-27 04:51:33 PST --- (In reply to comment #26) > (In reply to comment #24) > > What the compiler calls stuff internally has no bearing on > > what users of the language will call things. > > It's not an internal thing, that declaration is not an enum declaration, > period. enum is used as a keyword for more than one thing, which is bad, but > it's too late to change it now. > > We shouldn't name things in Phobos based on what people might think is right > or > looks right, but based on what the things really are. I couldn't disagree more. Firstly, what it is clearly documented as, is being some subset of enum. That's what it 'really is'. More importantly, if I look at the top of std.traits for something I presume to be called isEnum, and I see isEnumValue, I'll realise that's actually what I'm looking for immediately, use it, and save myself time. If I see something called isEnum, and it doesn't seem to work because it only reports true for enum TYPES (not values), then I'll declare it broken and report a bug. If I scan through everything in std.traits, and find nothing that looks like what I want, I'll get frustrated the thing I need is missing. If I see isManifestConstant, there is _NO WAY_ I would have even read what that is, it's clearly not what I'm looking for, I'm trying to identify if my thing is an enum... > It's a shame we don't have a 'manifest' keyword of some sort, it would help > avoid confusion. I guess 'enum' was used to cut back on having too many > keywords in the language. I honestly don't even know what manifest means. The terminology used in the syntax and the documentation is correct; it's a kind of enum. > Anyway it's documented behavior, see "manifest constants" here (it's at the > bottom): http://dlang.org/enum.html And every place it appears, it is clearly defined as being some subset of enum. Again, if I go looking for isEnum, and find a suite of more specific enum related traits (isEnumType, isEnumValue), I can easily conclude which is the one I'm looking for. If the name is completely unrelated and uses terminology most programmers have never heard before, they'll never spot it. As a side point, what do you call X in: enum E { X = 10 } ? Consider: enum E { X = 10 } enum Y = 10; E.X and Y are both identical as far as I can tell. I would presume: isEnumType!E == true, and isEnumValue!(E.X) == isEnumValue!Y == true. You can tweak the names, but I think traits to that effect are a) useful, b) what (I presume) most typical users will expect. E.X and Y are identical. I think this specialised term 'manifest constant' that only applies to Y can only result in confusion. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------