Indeed, we have BlInsets that are used for either padding or margin. Doru
> On Oct 26, 2017, at 11:43 PM, Stephane Ducasse <[email protected]> > wrote: > > Doru > > I was thinking that you would also have BlMargin because Margin is a > nice concept. > When I introduced it with Igor it simplified a lot of code in expand, > shrink and other operations. > > Stef > > On Thu, Oct 26, 2017 at 11:39 AM, Tudor Girba <[email protected]> wrote: >> Hi, >> >> To make the conversation more interesting, in Bloc we also have BlPoint with >> subclasses for 2D, 3D and 4D. The reason for this is that we model >> explicitly the intention of usage even if they share the instance variable >> names. We did not use Point because we needed 3D and 4D as well and Point >> has too many meanings that are conflated into one. >> >> This pattern was used everywhere we could. For example, we have BlBounds >> instead of Rectangle (actually, this is also because of performance reasons >> of working directly with 4 numbers rather than 2 points). >> >> Of course, these come with an apparent extra maintenance cost. So, if we see >> a possibility of unifying we should definitely take it, and this is where >> external reviewers can help to point out possibilities. We should just not >> unify just for the sake of it. >> >> Cheers, >> Doru >> >>> On Oct 26, 2017, at 10:57 AM, Tudor Girba <[email protected]> wrote: >>> >>> Hi, >>> >>>> On Oct 26, 2017, at 10:36 AM, Denis Kudriashov <[email protected]> >>>> wrote: >>>> >>>> 2017-10-26 10:20 GMT+02:00 Tudor Girba <[email protected]>: >>>> Hi, >>>>> On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <[email protected]> >>>>> wrote: >>>>> >>>>> Another question. >>>>> >>>>> Will not these vectors deprecate Point in future ? Imaging that we will >>>>> completely move to Bloc. >>>> >>>> No. Point is a perfectly reasonable data structure to describe a position. >>>> A Vector is something else and has other contracts. The coincidence is >>>> that they share the same variables, but they have different API. For >>>> example, a vector has #length. A point does not. >>>> >>>> Now Point implements most vector operations. The #length is defined as >>>> radius by #r message. I imaging that with new vector you will reimplement >>>> many of Point methods. Also I doubt that Point plays any role in system >>>> which is different than math vector. >>> >>> I think that over time we have accumulated all sorts of other usages for >>> Point. For example, Rectangle uses origin and corner as a position not as >>> vectors. >>> >>> Doru >>> >>>> >>>>> And what about Rectangle? (Bloc implements own BlRectangle). >>>> >>>> These two do not have the same semantics. BlRectangle is a BlGeometry and >>>> is used for defining a path within an element. BlRectangle is polymorphic >>>> with other paths such as BlEllipse or BlPolygon. Rectangle is a generic >>>> data structure that can be used for other purposes. >>>> >>>> We should definitely try to find commonalities and opportunities for >>>> unification. However, we should not confuse state with types which are >>>> defined by the purpose they are used for (and associated behavior). >>>> >>>> Doru >>>> >>>> >>>> >>>>> 2017-10-26 9:26 GMT+02:00 [email protected] <[email protected]>: >>>>> #(1 3 4 5 7 -2) asVector >>>>> >>>>> Meh. >>>>> Ugly. >>>>> >>>>> { 1. 3. 4. a. b } asVector >>>>> >>>>> is the natural consequence. >>>>> >>>>> v := (1,3,4,5,7,-2) asVector >>>>> >>>>> keeps the parens. But why do I need to do that? >>>>> >>>>> Autoformatting messing with my parentheses is just a mistake. >>>>> I put them in, leave them where they are, 'kay? I do not need an editor >>>>> that rewrites what I tell it. AST power or not. >>>>> >>>>> And frankly, I like the "Feenk way of doing things" most of the time, so >>>>> I am willing to go that route. >>>>> >>>>> Phil >>>>> >>>>> >>>>> >>>>> On Thu, Oct 26, 2017 at 8:52 AM, Peter Uhnák <[email protected]> wrote: >>>>>> >>>>>> Automatic formatting will turn it into >>>>>> >>>>>> vector := 1,3,4,5,7,-2. >>>>>> >>>>>> Which is not as nice. >>>>>> >>>>>> And even though it looks ok for literal numbers (#(1 3 4 5 7 -2) >>>>>> asVector would work too), this starts to look quite generic: >>>>>> >>>>>> vector := width, height, depth. >>>>>> >>>>>> >>>>>> Question: why not extend @ notation? >>>>>> >>>>>> x @ y @ z? >>>>>> >>>>>> Peter >>>>>> >>>>>> >>>>>> >>>>>> On Thu, Oct 26, 2017 at 8:22 AM, [email protected] <[email protected]> >>>>>> wrote: >>>>>>> >>>>>>> I also like the , message for those vectors and the concatenation of >>>>>>> dimensions makes sense. >>>>>>> >>>>>>> vector := (1,3,4,5,7,-2). >>>>>>> >>>>>>> looks how it should be. >>>>>>> >>>>>>> Readable, easy to translate vector stuff from reference text. >>>>>>> >>>>>>> Phil >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 26, 2017 at 7:00 AM, Nicolai Hess <[email protected]> >>>>>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[email protected]>: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> there might be reasons for an own 2D vector class (instead of using >>>>>>>> Point). >>>>>>>> But still I dislike the reimplementation of "," because for me so far >>>>>>>> it >>>>>>>> has the meaning of "concatenating things". >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Like concatenating coordinates :-) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Here you redefine it to create vector instances and it works only up >>>>>>>> to three >>>>>>>> so far. Right? >>>>>>>> >>>>>>>> I understand that this gives some similarities with the math notation >>>>>>>> (1,2) >>>>>>>> but I personally would prefer to use: >>>>>>>> >>>>>>>> 1@2 asVector >>>>>>>> >>>>>>>> or Vector2D x: 1 y: 2 >>>>>>>> >>>>>>>> Thx >>>>>>>> T. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Gesendet: Mittwoch, 25. Oktober 2017 um 20:06 Uhr >>>>>>>>> Von: "Tudor Girba" <[email protected]> >>>>>>>>> An: "Pharo Development List" <[email protected]> >>>>>>>>> Betreff: [Pharo-dev] , for vector creation >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> As mentioned in the separate thread, we played with introducing the >>>>>>>>> extension: >>>>>>>>> >>>>>>>>> , aNumber >>>>>>>>> ^ BlVector2D x: self y: aNumber >>>>>>>>> >>>>>>>>> This means that (10,20) will return a 2D vector. >>>>>>>>> >>>>>>>>> We also have (10,20,30) which returns a 3D vector. >>>>>>>>> >>>>>>>>> , is used for different meanings already in the image beside the >>>>>>>>> collection concatenation. For example, in FileReference is adds a >>>>>>>>> file extension. And Exceptions create a collection. In other >>>>>>>>> packages, PetitParser uses it as a sequence operator. >>>>>>>>> >>>>>>>>> Please voice your concerns. >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> Doru >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> www.tudorgirba.com >>>>>>>>> www.feenk.com >>>>>>>>> >>>>>>>>> "Every thing should have the right to be different." >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> -- >>>> www.tudorgirba.com >>>> www.feenk.com >>>> >>>> "When people care, great things can happen." >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> -- >>> www.tudorgirba.com >>> www.feenk.com >>> >>> "If you interrupt the barber while he is cutting your hair, >>> you will end up with a messy haircut." >> >> -- >> www.tudorgirba.com >> www.feenk.com >> >> "We are all great at making mistakes." >> >> >> >> >> >> >> >> >> > -- www.tudorgirba.com www.feenk.com "If you can't say why something is relevant, it probably isn't."
