2012/12/16 Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:
2012/12/16 Stéphane Ducasse <stephane.ducasse@inria.fr>:
On Dec 16, 2012, at 11:44 AM, Nicolas Cellier wrote:
2012/12/16 Stéphane Ducasse <stephane.ducasse@inria.fr>:
polymorphically they are a collection with a first and last :)
No.
(5 to: 4) is different than (3 to: 2) because they specify a different cursor position.
Ok that I understand
Viewed as collection, they have no first nor last, they're just empty
Nicolas
Currently:
(3 to: 2) first -> 3. (3 to: 2) last -> 2.
But: (2 to: 4 by: 3) last -> 2
Try to guess the logic behind this...
I see. But does it make sense to have (thinking aloud)? (3 to: 2) start -> 3 (3 to: 2) end -> 2 probably?
Yes, I did that refactoring in Squeak 3.9, but I was sure it would be rejected, too many methods were changed (TextMorph ParagraphEditor & co). See http://bugs.squeak.org/view.php?id=6454
You also know that breaking the classes we use for browsing/debugging is a dangerous sport ;)
The simplest thing would be to add a few message to TextLineInterval (first, last, ...) and move it somewhere else in hierarchy, because I don't think it shares that much with Interval. - I guess we don't use much of Collection protocol in TextLineInterval - it spoils first/last uniformity - it can't handle Interval step - ...
So we should improve that. If what I said is correct and you confirm it I will open a bug entry Stef
I found http://bugs.squeak.org/view.php?id=7002 indicating that most weirdness of Interval were corrected, but I'm quite sure it still has other reported or non reported bugs, except hash.
I can still do an infinite loop with to:do: and Float, 2 - Float epsilon to: 2 by: Float epsilon/4 do: [:i | Transcript cr; show: i printString]
but Interval>>do: is correct: (well I warned you, some rounding occurs...) (2 - Float epsilon to: 2 by: Float epsilon/4) do: [:i | Transcript cr; show: i printString]
For hash, I wonder if it would not be easier to just drop #(2 3) = (2 to: 3) and let it answer false. We have hasSameElementsThan: or isSameSequenceThan: for that purpose.
or we haven't (? can't remember), but should have.
Nicolas