[Python-Dev] Re: Dafanging the find() gotcha
David Abrahams" <firstname.lastname@example.org
Tue, 6 Aug 2002 11:57:08 -0400
A relevant discussion came up recently on the boost list. In our regex
library there's a function which tells you whether a string was a partial
match to the beginning of a pattern. The example used in the docs was a
credit-card number validator which watches what you type and beeps at you
if there's a mistake. Unfortunately, the implementation would return false
if the input string was empty. Of course that required special-casing for
the empty string. Eventually complaints from users caused the library
maintainer to change his mind about the response to the empty string.
David Abrahams * Boost Consulting
email@example.com * http://www.boost-consulting.com
----- Original Message -----
From: "Guido van Rossum" <firstname.lastname@example.org>
To: "Andrew Koenig" <email@example.com>
Cc: "Michael Chermside" <firstname.lastname@example.org>; "python-dev"
Sent: Tuesday, August 06, 2002 11:36 AM
Subject: Re: [Python-Dev] Re: Dafanging the find() gotcha
> > Michael> I think this is an extremely unconvincing example. You have
> > Michael> pushed the API up to the user of a program and supposed that
> > Michael> they expect the behavior which you are trying to defend. In
> > Michael> practice, what users expect in cases where a field is left
> > Michael> blank is for that field to be IGNORED, not for it to be
> > Michael> processed, but its contents treated as containing an empty
> > Michael> string.
> > I understand. My point is that in this particular example, what the
> > user perceives as ignoring the request is obtained by the
> > implementation technique of treating it as an empty string. The user
> > doesn't have to know about this implementation technique, of course.
> I think it's a poor implementation technique. :-) Opening the file to
> search for an empty string is very inefficient.
> My own potential example was some kind of graph traversal algorithm,
> representing paths by sequences of letters (the letters labeling
> edges), and involving paths that are subpaths of other paths.
> Certainly the empty path should be considered a valid subpath of other
> BTW, a more fool-proof (though unfortunately slower) way of testing
> for substring containment in existing Python would be s2.count(s1) --
> this returns the number of occurrences. And of course,
> 'abc'.count('') returns 4.
> --Guido van Rossum (home page: http://www.python.org/~guido/)
> Python-Dev mailing list