r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

BrianH
10-Dec-2010
[706]
Or to reverse a sort, or for whatever you need it to be for.
Ladislav
10-Dec-2010
[707]
OK, Brian, will do
Andreas
10-Dec-2010
[708]
For reversing we'd also have /reverse.
BrianH
10-Dec-2010
[709x2]
Yeah, we have options for the most common variants, and the default 
for the most common case. The /compare option is for everything else.
And not well enough documented either. I don't really know how /compare 
works, not completely.
Steeve
10-Dec-2010
[711]
to sort  gobs for instance, with your own scheme
BrianH
10-Dec-2010
[712]
I know *why* it is there, I just don't know how it *works*. How does 
it react to different return types of the comparison function? What 
types are allowed? When is the security hole going to be fixed?
Ladislav
10-Dec-2010
[713]
I know, that it is documented somewhere, that the Comparator can 
yield either logic! value or a number, where a negative number means 
"<", zero means "=", and a positive number means ">"
Andreas
10-Dec-2010
[714]
Btw, Linux A110's SORT seems rather stable for me :)
Ladislav
10-Dec-2010
[715]
using the example Brian gave?
BrianH
10-Dec-2010
[716]
Read the ticket. "Stable" means a different thing when applied to 
sorting algorithms.
Andreas
10-Dec-2010
[717]
Thanks Brian, I'm fine with terminology here.
BrianH
10-Dec-2010
[718]
No offence intended :)
Andreas
10-Dec-2010
[719x2]
I guess I wouldn't have told you about std::sort being unstable, 
if I wouldn't know what a stable sort is?
Yes Ladislav, for all examples in that ticket.
BrianH
10-Dec-2010
[721]
Sorry, momentary lack of humor. Did you mean that it works correctly 
on Linux?
Andreas
10-Dec-2010
[722]
Yes.
BrianH
10-Dec-2010
[723x2]
If so, please mention that in a ticket comment.
It might be a compiler problem.
Andreas
10-Dec-2010
[725]
A library problem, yes.
BrianH
10-Dec-2010
[726]
Are you talking about R2 or R3?
Andreas
10-Dec-2010
[727x2]
Read what I said above: A110
Two tests in the example code given in the ticket seem wrong to me.
BrianH
10-Dec-2010
[729]
Right, sorry. I read that after I sent the message.
Andreas
10-Dec-2010
[730x3]
; Verification using SAME?
>> set [c d] sort reduce [a: "a" b: "a"]
== ["a" "a"]
>> same? c a
== false  ; should be true
>> same? c b
== true  ; should be false
>> same? d a
== true  ; should be true
>> same? d b
== false  ; should be false
The last two tests should be the other way round, no?
same? d a ; should be false
same? d b ; should be true
BrianH
10-Dec-2010
[733]
Fixed.
Andreas
10-Dec-2010
[734]
Thanks
Steeve
10-Dec-2010
[735]
Btw, by reading again your samples Brian, I think now it"s weird 
for a quick sort.
Not exactly what I expected....
Andreas
10-Dec-2010
[736]
At least on Linux, it definitely is a qsort.
BrianH
10-Dec-2010
[737]
It might be using the C library qsort.
Andreas
10-Dec-2010
[738]
Calling the C librabry's qsort(3).
BrianH
10-Dec-2010
[739]
Definitely mention that in a ticket comment. We might be able to 
make this a platform-specific ticket.
Andreas
10-Dec-2010
[740x2]
Not really, I fear.
qsort(3) is not guaranteed to be stable.
BrianH
10-Dec-2010
[742]
I mean, mention that it works on Linux, if that is what your tests 
reveal.
Andreas
10-Dec-2010
[743x2]
(Neither is it guaranteed to be a quicksort.)
That it works on Linux is pure coincidence.
BrianH
10-Dec-2010
[745]
I ran into the problem when I was sorting words in a block and the 
bindings mattered.
Andreas
10-Dec-2010
[746]
If we want SORT to be stable, the implementation will have to abandon 
the use of qsort(3).
BrianH
10-Dec-2010
[747]
That would explain why the ticket is still not fixed. Please mention 
this in a ticket comment - it might lead to changing its status.
Andreas
10-Dec-2010
[748x2]
You can of course hack stability into qsort() by falling back to 
comparing adresses if values are the same.
Not sure if Carl likes that :)
BrianH
10-Dec-2010
[750x2]
That won't work, because we are comparing EQUAL? (maybe plus /case), 
not SAME?.
Does qsort take a comparison function? If so, it might be a error 
in that function.
Andreas
10-Dec-2010
[752]
I'm talking about the C side of things here.
BrianH
10-Dec-2010
[753]
Same here - a C function pointer.
Andreas
10-Dec-2010
[754x2]
Then I don't understand your EQUAL?/SAME? remark.
If two elements are EQUAL?, fall back to comparing their addresses 
in memory.