/ http://bugs.squeak.org/view.php?id=7180 +6455 +1603 +1602
/>>/
/>>/ Patches for Interval indexOf: and includes:
/>/
/>/ I wonder about these fixes because of
http://code.google.com/p/pharo/issues/detail?id=35
/>/
/>/ Did you reconsider the correctness of these fixes? They seem
/>/ complicated and after reading through the bug reports again
/>/ (especially http://bugs.squeak.org/view.php?id=7180) I concluded
/>/ that they may introduce more problems than they fix.
/I know I tried to find my way there too.
Now I trusted nicolas.
Nicolas are you strong on these fixes?
Stef
/
/>/
/>/ Adrian
/>/ _______________________________________________
/>/ Pharo-project mailing list
/>/ Pharo-project at lists.gforge.inria.fr
<http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project>
/>/ http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
/>
Thank you Stef.
Yes/, the fix is safe.
I develop here after these 3 points
A)- The code was wrong
///B)- Discussions were too long, but the fixes are very easy
//C)- library could be enhanced
//Adrian, hope I will convince you (also, read the code).
///
Cheers
Nicolas
A) ///The code was wrong//
/Prior this patch:
///- #includes: implementation were WRONG.
- #indexOf: was missing, falling back to naive super slow implementation
///
Try these two tests in any Squeak image of your choice (3.7 to: 3.10):
//
"There is no reason that the first is true while the second is false"
//{(Float pi to: 4*Float pi by: Float pi) includes: Float pi*2 + 1.0e-11.
(Float pi to: 4*Float pi by: Float pi) includes: Float pi*2 - 1.0e-11}.
/
/"There is no reason for this timeToRun to grow"
(1 to: 7) collect: [:i |
[(1 to: 10000000) indexOf: (10 raisedTo: i)] timeToRun]
/////
////B)- the fixes are very easy////
I simply implemented indexOf: with same algorithm as #includes: (corrected!).
Then removed includes: because super includes: is implemented sending indexOf:
Then I removed valueIncludes: because includes: was sole sender.
You see, two methods removed, one fix added: no revolution
/
/C)- library could be enhanced
/What I would prefer is:
- implement a method with an argument so that user can choose comparison
tolerance
- expand this fuzzy inclusion test to any other collection
Maybe something like:
includes: aNumber moreOrLess: aTolerance.
Then Interval includes: could eventually use a default tolerance.
But the obvious bugs must first be corrected...
/
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project