(1 i: 2) is nice. Tx for the feedback nicolas.
On Sat, Oct 28, 2017 at 11:15 PM, Nicolas Cellier <[email protected]> wrote: > 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." >> > >> > >> >
