[ENH] Lexicographic ordering for sequences

Richard A. O'Keefe ok at cs.otago.ac.nz
Wed Apr 10 02:24:05 UTC 2002


'From Squeak2.8 of 13 June 2000 [latest update: #2359]
 on 10 April 2002 at 3:06:01 pm'!
"Change Set:		SequenceComparison
Date:			10 April 2002
Author:			Richard A. O'Keefe

This change set adds the Magnitude operations < <= > >= between:and:
min: max: min:max: to SequenceableCollection, using the usual lexicographic
ordering.  It only makes sense to compare two sequences if their elements
are comparable.  A nasty feature of Squeak was that String had < <= > >-=
but not max: or min:.  Although String itself is not altered, it now inherits
max: min: and min:max: methods which work as you would expect, and the
existing String comparison methods would be redundant, except that they
use a system primitive for speed."!

begin 644 SequenceComparison.1.cs
M)T9R;VT at 4W%U96%K,BXX(&]F(#$S($IU;F4@,C P,"!;;&%T97-T('5P9&%T
M93H@(S(S-3E=(&]N(#$P($%P<FEL(#(P,#(@870@,SHP-CHP,2!P;2<A#2)#
M:&%N9V4 at 4V5T.@D)4V5Q=65N8V5#;VUP87)I<V]N#41A=&4Z"0D),3 @07!R
M:6P@,C P, at U!=71H;W(Z"0D)4FEC:&%R9"!!+B!/)TME969E#0U4:&ES(&-H
M86YG92!S970 at 861D<R!T:&4 at 36%G;FET=61E(&]P97)A=&EO;G,@/" \/2 ^
M(#X](&)E='=E96XZ86YD. at UM:6XZ(&UA>#H@;6EN.FUA>#H@=&\@4V5Q=65N
M8V5A8FQE0V]L;&5C=&EO;BP@=7-I;F<@=&AE('5S=6%L(&QE>&EC;V=R87!H
M:6,-;W)D97)I;F<N("!)="!O;FQY(&UA:V5S('-E;G-E('1O(&-O;7!A<F4@
M='=O('-E<75E;F-E<R!I9B!T:&5I<B!E;&5M96YT<PUA<F4 at 8V]M<&%R86)L
M92X@($$@;F%S='D at 9F5A='5R92!O9B!3<75E86L@=V%S('1H870 at 4W1R:6YG
M(&AA9" \(#P](#X@/BT]#6)U="!N;W0@;6%X.B!O<B!M:6XZ+B @06QT:&]U
M9V@@4W1R:6YG(&ET<V5L9B!I<R!N;W0 at 86QT97)E9"P@:70@;F]W(&EN:&5R
M:71S#6UA>#H@;6EN.B!A;F0@;6EN.FUA>#H@;65T:&]D<R!W:&EC:"!W;W)K
M(&%S('EO=2!W;W5L9"!E>'!E8W0L(&%N9"!T:&4-97AI<W1I;F<@4W1R:6YG
M(&-O;7!A<FES;VX@;65T:&]D<R!W;W5L9"!B92!R961U;F1A;G0L(&5X8V5P
M="!T:&%T('1H97D-=7-E(&$@<WES=&5M('!R:6UI=&EV92!F;W(@<W!E960N
M(B$-#0TA36%G;FET=61E(&UE=&AO9'-&;W(Z("=C;VUP87)I;F<G('-T86UP
M.B G<F%O:R T+S$P+S(P,#(@,30Z-#0G(0T\/2!A36%G;FET=61E( T)(D%N
M<W=E<B!W:&5T:&5R('1H92!R96-E:79E<B!I<R!L97-S('1H86X@;W(@97%U
M86P@=&\@=&AE(&%R9W5M96YT+B(-"2)297=R:71T96X@=&\@8V%L;" \(&1I
M<F5C=&QY+"!O;F4@;65S<V%G92!S96YD(&9E=V5R+B(-#0E>*&%-86=N:71U
M9&4@/"!S96QF*2!N;W0A("$-#0TA4V5Q=65N8V5A8FQE0V]L;&5C=&EO;B!M
M971H;V1S1F]R.B G8V]M<&%R:6YG)R!S=&%M<#H@)W)A;VL at -"\Q,"\R,# R
M(#$T.C0V)R$-/"!O=&AE<D-O;&QE8W1I;VX@#0DB06YS=V5R('1R=64@:68@
M=&AE(')E8V5I=F5R('!R96-E9&5S(&]T:&5R0V]L;&5C=&EO;B!I;B!L97AI
M8V]G<F%P:&EC(&]R9&5R+B(-"7QM(&X at 82!B? T-"6T at 7R!S96QF('-I>F4N
M#0EN(%\@;W1H97)#;VQL96-T:6]N('-I>F4N#0DQ('1O.B H;2!M:6XZ(&XI
M(&1O.B!;.FE\#0D)82!?('-E;&8 at 870Z(&DN#0D)8B!?(&]T:&5R0V]L;&5C
M=&EO;B!A=#H@:2X-"0EA(#T at 8B!I9D9A;'-E.B!;7F$@/"!B75TN#0E>;2 \
M(&XA("$-#2%397%U96YC96%B;&5#;VQL96-T:6]N(&UE=&AO9'-&;W(Z("=C
M;VUP87)I;F<G('-T86UP.B G<F%O:R T+S$P+S(P,#(@,30Z-#DG(0T\/2!O
M=&AE<D-O;&QE8W1I;VX@#0DB06YS=V5R('1R=64@:68@=&AE(')E8V5I=F5R
M('!R96-E9&5S(&]T:&5R0V]L;&5C=&EO;B!I;B!L97AI8V]G<F%P:&EC(&]R
M9&5R#2 @(" @(&]R(&ES('1O(&)E(&]R9&5R960@=&AE('-A;64N(" H<S$@
M/#T@<S(I("8@*',R(#P](',Q*2!D;V5S(&YO="!I;7!L>2 H<S$@/2!S,BDL
M#0D at 8F5C875S92!T:&4@;&%T=&5R(&]N;'D@:&]L9',@=VAE;B!T:&4@='=O
M('-E<75E;F-E<R!H879E('1H92!S86UE('-P96-I97,N#0D at 5&@@;&5X:6-O
M9W)A<&AI8R!O<F1E<FEN9R!U<V5D(&AE<F4 at 9&]E<R!N;W0@*&-U<G)E;G1L
M>2D@<F5Q=6ER92!T:&4@='=O#0D@<V5Q=65N8V5S('1O(&AA=F4@=&AE('-A
M;64@<W!E8VEE<RXB#0T)7BAO=&AE<D-O;&QE8W1I;VX@/"!S96QF*2!N;W0A
M("$-#2%397%U96YC96%B;&5#;VQL96-T:6]N(&UE=&AO9'-&;W(Z("=C;VUP
M87)I;F<G('-T86UP.B G<F%O:R T+S$P+S(P,#(@,30Z-3 G(0T^(&]T:&5R
M0V]L;&5C=&EO;B -"2)!;G-W97(@=')U92!I9B!T:&4@<F5C96EV97(@9F]L
M;&]W<R!O=&AE<D-O;&QE8W1I;VX@:6X@;&5X:6-O9W)A<&AI8R!O<F1E<BXB
M#0T)7F]T:&5R0V]L;&5C=&EO;B \('-E;&8A("$-#2%397%U96YC96%B;&5#
M;VQL96-T:6]N(&UE=&AO9'-&;W(Z("=C;VUP87)I;F<G('-T86UP.B G<F%O
M:R T+S$P+S(P,#(@,30Z-3 G(0T^/2!O=&AE<D-O;&QE8W1I;VX@#0DB06YS
M=V5R('1R=64@:68@=&AE(')E8V5I=F5R(&9O;&QO=W,@;W1H97)#;VQL96-T
M:6]N(&EN(&QE>&EC;V=R87!H:6,@;W)D97(-(" @(" @;W(@:7,@=&\@8F4@
M;W)D97)E9"!T:&4@<V%M92X@("AS,2 ^/2!S,BD@)B H<S(@/CT@<S$I(&1O
M97,@;F]T(&EM<&QY("AS,2 ](',R*2P-"2!B96-A=7-E('1H92!L871T97(@
M;VYL>2!H;VQD<R!W:&5N('1H92!T=V\@<V5Q=65N8V5S(&AA=F4@=&AE('-A
M;64@<W!E8VEE<RX-"2!4:"!L97AI8V]G<F%P:&EC(&]R9&5R:6YG('5S960@
M:&5R92!D;V5S(&YO=" H8W5R<F5N=&QY*2!R97%U:7)E('1H92!T=V\-"2!S
M97%U96YC97,@=&\@:&%V92!T:&4@<V%M92!S<&5C:65S+B(-#0E>*'-E;&8@
M/"!O=&AE<D-O;&QE8W1I;VXI(&YO="$@(0T-(5-E<75E;F-E86)L94-O;&QE
M8W1I;VX@;65T:&]D<T9O<CH@)V-O;7!A<FEN9R<@<W1A;7 Z("=R86]K(#0O
M,3 O,C P,B Q-#HU,R<A#6)E='=E96XZ(&UI;B!A;F0Z(&UA>" -"2)!;G-W
M97(@=VAE=&AE<B!T:&4@<F5C96EV97(@:7,@;&5S<R!T:&%N(&]R(&5Q=6%L
M('1O('1H92!A<F=U;65N="P@;6%X+" -"6%N9"!G<F5A=&5R('1H86X@;W(@
M97%U86P@=&\@=&AE(&%R9W5M96YT+"!M:6XL(&%C8V]R9&EN9R!T;R!L97AI
M8V]G<F%P:&EC#0EO<F1E<B!O;B!S97%U96YC97,N(@T-"5XH;6%X(#P@<V5L
M9BD@;F]T(&%N9#H at 6RAS96QF(#P@;6EN*2!N;W1=(2 A#0TA4V5Q=65N8V5A
M8FQE0V]L;&5C=&EO;B!M971H;V1S1F]R.B G=&5S=&EN9R<@<W1A;7 Z("=R
M86]K(#0O,3 O,C P,B Q-#HU-"<A#6UA>#H@;W1H97)#;VQL96-T:6]N#0DB
M06YS=V5R('=H:6-H979E<B!C;VUE<R!L871E<B!I;B!L97AI8V=R87!H:6,@
M;W)D97)I;F<N(@T-"5YS96QF(#P@;W1H97)#;VQL96-T:6]N(&EF5')U93H@
M6V]T:&5R0V]L;&5C=&EO;ET@:69&86QS93H at 6W-E;&9=(2 A#0TA4V5Q=65N
M8V5A8FQE0V]L;&5C=&EO;B!M971H;V1S1F]R.B G=&5S=&EN9R<@<W1A;7 Z
M("=R86]K(#0O,3 O,C P,B Q-#HU-2<A#6UI;CH@;W1H97)#;VQL96-T:6]N
M#0DB06YS=V5R('=H:6-H979E<B!C;VUE<R!E87)L:65R(&EN(&QE>&EC9W)A
M<&AI8R!O<F1E<FEN9RXB#0T)7G-E;&8@/"!O=&AE<D-O;&QE8W1I;VX@:694
M<G5E.B!;<V5L9ET@:69&86QS93H at 6V]T:&5R0V]L;&5C=&EO;ETA("$-#2%3
M97%U96YC96%B;&5#;VQL96-T:6]N(&UE=&AO9'-&;W(Z("=T97-T:6YG)R!S
M=&%M<#H@)W)A;VL at -"\Q,"\R,# R(#$T.C4V)R$-;6EN.B!E87)L:65R0V]L
M;&5C=&EO;B!M87 at Z(&QA=&5R0V]L;&5C=&EO;@T)7BAS96QF(&UI;CH at 96%R
I;&EE<D-O;&QE8W1I;VXI(&UA>#H@;&%T97)#;VQL96-T:6]N(2 A#0T@
 
end



More information about the Squeak-dev mailing list