Ben Finney wrote: > Gabriel G <[EMAIL PROTECTED]> writes: > > >>At Tuesday 3/10/2006 21:52, Ben Finney wrote: >> >> >>>Gerrit Holl <[EMAIL PROTECTED]> writes: >>> >>>> - str methods endswith, find, partition, replace, split(lines), >>>> startswith, >>>> - Regular expressions >>> >>>Looking at those, I don't see why they wouldn't be useful for *all* >>>sequence types. Perhaps there needs to be a 'seq' type containing >>>those common methods, that is the superclass of 'str', 'bytes', >>>'list', 'tuple' et cetera. >> >>find() could be useful sometimes. >>But what means partition, replace, split, etc on a generic sequence? > > > >>> "spamandeggs".partition("and") > ('spam', 'and', 'eggs') > >>> ["foo", "bar", "spam", "baz", "quux", "wibble"].partition("spam") > (["foo", "bar"], ["spam"], ["baz", "quux", "wibble"]) > > >>> "spamandeggs".startswith("spam") > True > >>> ["foo", "bar", "spam", "baz", "quux", "wibble"].startswith("foo") > True > > i.e. the 'str' methods can be seen as operating on a sequence of > characters; their 'str' return values are likewise sequences of > characters. That can be generalised to a sequence of the same type as > the instance; so, in the examples above, the 'list' methods operate on > sub-lists. > > Perhaps not all of the mentioned methods make sense for all sequence > types. But I think it would be useful to have a common set of > functionality available for all sequence types, in a common ancestor. > This would just be bloat without any use cases being demonstrated. What is your crying need for these methods? The second one, by the way, is normally spelled:
["foo", "bar", "spam", "baz", "quux", "wibble"][0] == "foo" Your *real* generalisation of the string method would actually require you to write ["foo", "bar", "spam", "baz", "quux", "wibble"].startswith(["foo"]) because you also need to be able to write ["foo", "bar", "spam", "baz", "quux", "wibble"].\ startswith(["foo", "bar"]) OK, a startswith() method could return false on a zero-length sequence to avoid having to program around that corner case, but I question the need for this. Similarly your first example would need to take a list argument. Python didn't get to be the language it is today by adding unnecessary hypergeneralisations on a whim. Show me how these methods will improve the daily lives of programmers and I'll champion them to the developers, but I don't think the world will be beating a path to your door. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list