[Guido] > ... > It's no big deal if the Vaults contain three or more set modules -- > perfect even, people can choose the best one for their purpose. They really can't, not realistically, unless all the modules in question conform to the same interface (which users can't control), and users restrict themselves to methods defined only in the interface (which users can control). The problem is that "their purpose" changes over time, and in some cases the effects of representation on performance simply can't be out-guessed in advance of actual measurement. If people need to change any more than just the import statement, *then* a single implementation has to be all things to all people. I hate to say this (bet <wink>?), but I suspect the fact that Python's basic types are all builtin and not classes has kept us from fully appreciating the class-based "1 interface, N implementations" approach that C++ and Java hackers are having so much fun with. They're not all that easy to find, but people who have climbed the steep STL learning curve often end up in the same ecstatic trance I used to see only among fellow Pythoneers. > But in the core, there's only room for one set type or module. I don't like the conclusion: it implies there's no room in the core for more than one implementation of anything, yet one-size-fits-all doesn't. I have no problem with the idea that there's only room for one Set *interface* in the core. Then you only need Pronounce on a reasonable set of abstract operations, and leave the implementation tradeoffs to be made by different people in different ways (I've really got no use for Eric's list-based sets; he's really got no use for my sets-of-sets). That said, if there can be at most one, and must be at least one, a hashtable based set is the best compromise there is, and mutable objects as elements should not be supported (they add great implementation complexity for the benefit of relatively few applications). jeremy's-set-class-couldn't-be-accused-of-overkill<wink>-ly y'rs - tim
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4