lists:sort/2

Asko Husso etxhua@REDACTED
Tue Jun 3 18:31:12 CEST 2003


Uffe, try:

lists:foldl(
    fun({P,R}, {Low, High}) when P < 3 ->
            {[{P,R}|Low], High};
       (stop, {Low, High}) ->
           lists:keysort(1, Low) ++ lists:keysort(2, High);
       (X, {Low, High}) ->
           {Low, [X|High]}
    end,
    {[], []}, L ++ [stop]).
    
The lists module is nice to have ;-)

/Asko

> X-Authentication-Warning: cbe1066.al.sw.ericsson.se: etxuwig owned process 
doing -bs
> Date: Tue, 3 Jun 2003 18:10:52 +0200 (MEST)
> From: Ulf Wiger <etxuwig@REDACTED>
> X-X-Sender: etxuwig@REDACTED
> To: "Erik Reitsma (ETM)" <Erik.Reitsma@REDACTED>
> cc: erlang-questions@REDACTED
> Subject: RE: lists:sort/2
> MIME-Version: 1.0
> X-OriginalArrivalTime: 03 Jun 2003 16:12:16.0555 (UTC) 
FILETIME=[E6AADFB0:01C329EA]
> 
> 
> I will try thinking before posting next time.
> Maybe it's time to call it a day.  :)
> 
> /Uffe
> 
> On Tue, 3 Jun 2003, Erik Reitsma (ETM) wrote:
> 
> >> I encountered some surprising results when using
> >> lists:sort/2. Given a list [{P,R}], I wanted a list sorted
> >> on P for all P < 3, and sorted on R for the remainder.
> >
> >What result would you like when you compare {P1,R1} and {P2,R2}, and P1<3 and 
P2>=3? And what if P1>=3 and P2<3? It looks like you have not specified this.
> >
> >> lists:sort(
> >>   fun({P1,_}, {P2,_}) when P1 < 3 ->
> >> 	  P1 < P2;
> >>      ({_,R1}, {_,R2}) ->
> >> 	  R1 < R2
> >>   end, L).
> >
> >If this function even anti-symmetrical? Consider X1={1,10} and X2={4,9}. Then 
F(X1,X2) = true and F(X2,X1) = true. Your function should be such, that F(A,B) = 
not F(B,A) for all A and B.
> >
> >When you have defined the relation you want, I think you will be able to find 
a fun that really implements that relation.
> >
> >*Erik.
> >
> 
> -- 
> Ulf Wiger, Senior Specialist,
>    / / /   Architecture & Design of Carrier-Class Software
>   / / /    Strategic Product & System Management
>  / / /     Ericsson AB, Connectivity and Control Nodes
> 

Asko Husso                       	E-mail:etxhua@REDACTED
Ericsson AB		  	        Phone: +46 8 7192324
Varuvägen 9B                               
S-126 25 Stockholm-Älvsjö, Sweden





More information about the erlang-questions mailing list