[Python-Dev] Re: Re: lists v. tuples (original) (raw)
Andrew Koenig ark@research.att.com
16 Apr 2003 11:20:52 -0400
- Previous message: [Python-Dev] Re: Re: lists v. tuples
- Next message: [Python-Dev] Re: Re: lists v. tuples
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
So the first time you care is the first time f(x, y) returns nonzero. Now you can find out what kind of function f is by calling f(y, x). If f(y, x) returns zero, f is <. Otherwise, it's a 3-way comparison.
Guido> Right. There's no flaw in this logic, but I'd hate to have to Guido> explain it over and over... I don't want people to believe Guido> that Python can somehow magically sniff the difference between Guido> two functions; they might expect it in other contexts.
I can understand your reluctance -- I was just pointing out that it's possible.
However, I'm slightly dubious about the x.sort(lt=f) vs x.sort(cmp=f) technique because it doesn't generalize terribly well.
If I want to write a function that takes a comparison function as an argument, and eventualy passes that function to sort, what do I do? Something like this?
def myfun(foo, bar, lt=None, cmp=None):
# ...
x.sort(lt=lt, cmp=cmp)
# ...
and assume that sort will use None as its defaults also? Or must I write
if lt==None:
x.sort(cmp=cmp)
else:
x.sort(lt=lt)
Either way it's inconvenient.
So I wonder if it might be better, as a way of allowing sort to take two different types of comparison functions, to distinguish between them by making them different types.
-- Andrew Koenig, ark@research.att.com, http://www.research.att.com/info/ark
- Previous message: [Python-Dev] Re: Re: lists v. tuples
- Next message: [Python-Dev] Re: Re: lists v. tuples
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]