Guido van Rossum wrote: > On 5/11/06, Talin <[EMAIL PROTECTED]> wrote: > >> The word 'sequence' here doesn't mean an exclusive category. In a sense, >> all sequences are really mappings - they "map" a range of integers to >> values. > > > No, the requirements for sequence-ness are stronger. The set of ints > mapped must be exactly range(len(x)). And iterating over the sequence > is required to return the values in numerical order of the index set > (unlike iterating over a dict whose keys happen to be a contiguous set > of ints starting at 0). And for mutable sequences, insertions and > deletions move all the other keys around -- very different from a > mutable mapping. And sequences are expected to implement slicing, > concatenation and repetition. > > In general, there are two possible taxonomies of container types for > Python: minimal and maximal. The minimal taxonomy attempts to describe > the minimal features that a specimen of container ought to have in > order to be considered a member of a given species of container. It is > useful for determination but not so useful for prediction of behavior. > The maximal taxonomy attempts to describe all the features shared by > (most) members of a species; it's harder to use for determination, but > more useful for describing expected behavior. > > I think I'm more comfortable with a maximal taxonomy. In a maximal > taxonomy, I'd describe a large set of invariants, attributes, > behavior, etc., and say e.g. "this is how a file behaves". A > particular class can then claim to be a file by explicitly declaring > this (how that's spelled is a different issue -- it doesn't need to be > done by inheritance from an abstract base class or interface, it could > also be an arbitrary property, agreed upon by convention, or an > external registry of all file types, for example). > > For the purposes of generic/overloaded functions, if we can overload > on such abstract container species, the declared container species (or > the "best" one, if multiple species can be declared) should determine > the implementation chosen -- and damn the torpedoes if the object > declares it's a file but doesn't implement isatty(). (I.e. I don't > care, it's still a file, just like a three-legged dog is still a dog.) >
OK, this sounds right to me. At least, it sounds like what you are describing is what I am asking for :) -- Talin _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com