On 16 December 2012 16:51, Stéphane Ducasse <[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. >> >> 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
If you use Ruby for any length of time (and ignore most of the syntax) you will quickly realise that Ruby _is_ Smalltalk in many fundamental ways. It's just a pity Matz based its syntax on Perl (or so it seems). Ruby = Smalltalk with rubbish syntax and awesome integration with basic programmer tools and decent infrastructure. frank > 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. >>>> >>> >>> >> > >
