>>>>> "LP" == Luke Palmer <[EMAIL PROTECTED]> writes:

  >> # P5: @sorted = sort { $a->foo('bar')->compute <=> $b->foo('bar')->compute }
  >> #               @unsorted
  >> # or: @sorted = map { $_->[1] }
  >> #               sort { $a->[0] <=? $b->[0] }
  >> #               map { [ $_->foo('bar')->compute, $_ ] }
  >> #               @unsorted
  >> @sorted = sort &infix:<=>, key => { $_.foo('bar').compute } <== @unsorted;

  LP> Ok, I have to say, that's pretty good.  Er, really good.  I like it a
  LP> lot.

how do you select descending order? and how do you selecte that per key?
you can't provide a binary operator without also providing the
order. and what about different key types? the <=> and cmp operators are
not enough information needed to do complex sorts. collating sequences
are another issue. you need to have that info on a perl key basis. 

  >> I think my suggestion wins big here.  We've only had to specify how
  >> to extract the key, and sort itself takes care of everything else.
  >> And it looks to me like this sort function has enough information
  >> about the programmer's intent for it to optimise in all sorts of
  >> exciting ways -- it should be able to do the equivalent of the GRT
  >> internally, for example.

sort can't figure it out without you telling it things. you need more
than just key extraction.

  >> Just for kicks, this one demonstrates all the features.  It's the same as
  >> before, but in descending order:
  >> 
  >> @unsorted
  >> ==> sort &infix:<=>, desc => 1, key => { $_.foo('bar').compute }
  >> ==> @sorted;
  >> 
  >> What problems can anyone spot with this suggestion?

multiple keys with each having different comparisons and different sort
orders.

  LP>     @unsorted
  LP>         ==> sort { $^b <=> $^a }, key => { .foo('bar').compute }
  LP>         ==> @sorted

  LP> Which people have made pretty clear that they don't like.

as i have said before. needing to have $a and $b in the correct order is
bug prone and confusing to many.

uri

-- 
Uri Guttman  ------  [EMAIL PROTECTED]  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org

Reply via email to