> 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. > > 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.
Why not? Now it would be good to move. but what I know is that igor wanted to have range intersection for the new text model. Another question: who thinks that ruby look at Smalltalk when they take a decision on their library? I do not think so. We can check what is around and **improve** our nice system Stef > 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. >>> >> >> >
