Just a few notes: 1) 4 , 2 , 3 , 5 looks too much like Shlemiel the painter, ok for short vector input, but not even for printing (think re-interpreting)
2) 1 x + 2 y + 3 z might look nice. Exactly like 1+2i (Complex) or 1+2i+3j+4k (Quaternion) But for the sake of efficiency, I had to introduce (1 i: 2) otherwise interpretng a complex matrix was too much expensive (compared to Matlab) 3) as Doru said, there are many possible conflicts for Number>>, I'm pretty sure that Jun was using it too for this reason I removed it from Smallapack 2017-10-27 19:12 GMT+02:00 Stephane Ducasse <[email protected]>: > Ok good to know. > > On Fri, Oct 27, 2017 at 8:39 AM, Tudor Girba <[email protected]> wrote: > > 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." > > > > > >
