On 16 December 2012 16:19, Nicolas Cellier
<[email protected]> wrote:
> Beware, Range exists in other languages (python, etc..).
> We should check if they correspond to a Smalltalk Interval or a
> mathematical Interval.
> If they correspond to a Smalltalk Interval, that will be one more
> un-necessary trap.

Certainly in Ruby a range is like a Smalltalk Interval: (1..10) is the
same as 1 to: 10.

> Note that we rarely use Interval, we just use #to: or #to:by:, so we
> could as well rename Interval->Range.
> And postpone creation of Mathematical Interval which is most likely
> unused in kernel image.

Indeed, I think it's clear the confusion around this class is as Igor
says: a mathematical interval, or a set of contiguous integers (or
other countable things).

frank

> Nicolas
>
> 2012/12/16 Stéphane Ducasse <[email protected]>:
>> I agree so we should introduce Range.
>> Did not you or camillo started to have Range?
>> It can be a really nice class.
>>
>> Stef
>> On Dec 16, 2012, at 4:55 PM, Igor Stasenko wrote:
>>
>>> So, to my sense a behavior of Interval is overloaded..
>>> it tries to be too many things at once:
>>> - be an interval in math sense (which is infinite set if used for Real 
>>> numbers)
>>> - be a "collection" of numbers which you can enumerate (implies that
>>> it is finite).
>>>
>>> to me, i would be much happier if we could have two different and
>>> non-intersecting entities:
>>>
>>> - Enumeration. This one indeed can be used as a collection. i.e.
>>> "give me all integer numbers lying between values A and B, count each
>>> C-th number"
>>>   Like that,
>>>   (1 to: 1.5 by: 1) is enumeration which contains a single element.
>>> and #last should be = 1
>>>
>>> - Interval (Range). A pure interval in math sense:  defines a Set of
>>> numbers lying between numbers A and B, inclusive, where A <= B. Not
>>> enumerable, therefore no 'step' variable, instead what it could have,
>>> is flags to indicate whether interval endpoints included into interval
>>> or not.. i.e. (a,b) vs [a,b] vs [a,b) vs (a,b].
>>>
>>> Not supporting enumeration (no #do: , no #add: no #at: etc). You can,
>>> however intersect, merge or diff two intervals etc.. same operations
>>> which you doing on sets (but that would require another entity -
>>> interval set). And of course, you can test whether some number lies
>>> within given interval or not.
>>>
>>> The reason i started this topic is because some code were using
>>> 'range' for variables which holding intervals..
>>> Now what you think is more appropriate protocol for something called
>>> 'range', this:
>>>
>>> x := range first
>>> y := range last
>>>
>>> or this:
>>>
>>> x := range start
>>> y := range end
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>>
>>
>>
>

Reply via email to