Excerpts from rantingrick's message of Tue Jul 05 07:42:39 -0400 2011: > > I was thinking more about this comment and it occurred to me that > Python does have user controlled data structures. Just because there > is no "top level syntax" like ruby does not mean these do not exists. > You only have to look below the surface. Take the sort methods of > lists for example... > > >>> lst = [ > (100, 0), > (25, 2), > (10,1), > ] > >>> lst > [(100, 0), (25, 2), (10, 1)] > >>> lst.sort() > >>> lst > [(10, 1), (25, 2), (100, 0)] > >>> lst.sort(lambda x,y: cmp(x[1], y[1])) > >>> lst > [(100, 0), (10, 1), (25, 2)] > > ...that looks like a "user defined control" structure to me. So how > can an anti-feature become part of the language proper? (devils > advocate here) :) >
How is giving the sort method a function by which to determine the relative value of objects a control structure? Do you know what a control structure is? It's something that you use to modify control flow: if foo <= bar: foo += 1 else: bar += 1 That's a control structurem the "if-else". I don't know what Ruby calls a control structure, but that's what it is. for and while are in there too. When you run lst.sort(lambda x, y: cmp(x[1], y[1])), what happens? We'll call that argument srt, here's a sample (naive) implementation: def sort(key): lst = self.internal_list for n in range(len(self.internal_list) - 1): for i in range(len(self.internal_list) - 1): if srt(lst[i], lst[i+1]) < 0: lst[i], lst[i+1] = lst[i+1], lst[i] Untested, probably doesn't work either. See what's in there? An if. Nothing "user-defined" at all. Sure, WHAT the if does is user-controlled with the key, but that doesn't make that particular if a new control structure, and it certainly doesn't make the key a control structure. You can pass a key to a sort even in C and that certainly doesn't have user defined control structures. -- Corey Richardson "Those who deny freedom to others, deserve it not for themselves" -- Abraham Lincoln
signature.asc
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list