On Fri, 2006-03-24 at 18:58 -0800, Guido van Rossum wrote: > On 3/24/06, Tim Peters <[EMAIL PROTECTED]> wrote: > > [Guido] > > > The Java collections framework actually has an API and an idiom that > > > make this work: therd's a method on the *iterator* that deletes the > > > current item without disturbing the iteration. > > > > Yup, I saw that: > > > > http://java.sun.com/j2se/1.4.2/docs/api/java/util/Iterator.html > > > > It's at least curious that there isn't also a method to add an item in > > the base Iterator interface. > > I could ask my drinking buddy Josh Bloch, but I'll try to channel him > first: (a) the use case isn't as attractive (why would you want to > insert an item during an iteration? the use case for deletion during > iteration is very natural); (b) did you mean to insert it before, > after, or a random item? for hash sets that doesn't matter, but for > trees and lists it does. (c) it would be hard to implement for hash > sets because you may not have a choice about not rehashing. > > [...] > > > Note that this is all quite independent from the views proposal (also > > > inspired by Java). > > > > I'm not sure I saw a coherent "views proposal" ;-) Java has some nice > > ideas, but I'd think it's too elaborate for your tastes (and, by > > extension, for Python's). For example, it has six(?) collection > > interfaces, two of which don't even extend the base Collection > > interface. AFAICT, what Java calls "views" are unique to some methods > > of its Map and SortedMap interfaces. > > Right, the views only make sense for maps that have separate keys and values. > > > To be concrete, is what you're calling "a view" the kind of thing > > returned by Java's AbstsactMap.entrySet()?: > > > > http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractMap.html > > Yes. Another example is Map.keySet(), which returns a set view of the > keys of a map: > > http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html#keySet() > > > That's closest to Python's items(), and AbstractMap.keys() is closest > > to Python's keys(). Java being Java, AbstractMap.values() returns a > > different _type_ of object than those two (Java's further > > sub-distinction between "set views" and "collection views"). > > The "Abstract" classes aren't the most interesting pieces; they are > really building blocks for implementers, as explained here: > > http://java.sun.com/j2se/1.4.2/docs/guide/collections/overview.html > (section "Collection Implementations", last para of the intro). > > The really core stuff is in the interfaces. > > The difference between sets and collections is that collections may > have duplicates; that's pretty essential for the thing you get from > values(), but keys() and items() return sets (of different types). > > > I vote to steal the good parts and drop all the distinctions :-) > > Maybe. I need a volunteer to write the PEP!
Oh, why not. Me me! - Adam _______________________________________________ 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