On 17 December 2012 07:28, Frank Shearar <[email protected]> wrote: > 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.
I should add: with that last clause I'm not trying to dismiss Pharo's and Squeak's massive improvement in infrastructure. It's just that it's nowhere near as slick as in Ruby. frank > 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. >>>>> >>>> >>>> >>> >> >>
