On Tuesday, May 28, 2013 04:52:50 Diggory wrote: > Are you really arguing that the existing system is easier to > understand?
I'm arguing that the only problem in the current design is the name. TypeTuple is a template for creating built-in tuples, and the built-in tuples deal with both expressions and types, so that's what TypeTuple should do. The fact that it's called TypeTuple is a problem, because it doesn't just deal with types, and the fact that the documentation indicates that it just deals with types is a problem, because it doesn't. But I don't think that there's any problem with how the template itself works. If I could go back, I'd rename TypeTuple to something like StaticTuple, or ParamTuple, or ArgTuple, or ParamSeq, or ArgSeq, or some other name which made more sense for what it does. But given that we can't go back in time, we have to contend with the fact that both the module and template have the name TypeTuple (albeit with different capitalization) and that changing them would break a lot of code. And Walter in particular is very much against making breaking changes which don't have a large ROI, and he and Andrei have made it clear that they don't want to be changing symbol names in the library at this point just because the names aren't as good as they should be. The ROI is too small. So, at this point, the fact that a name is poor is generally _not_ enough to get it changed. TypeTuple is bad enough that they _might_ agree to it, but I doubt it. So, given the current situation, we clearly need to improve the documentation, but that's probably all that we can do. Regardless, I have _zero_ problem with the design of TypeTuple, just the name. - Jonathan M Davis
