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." |
For example, in FileReference is adds a file extension. PetitParser uses it as a sequence operator. But in both cases #, is sent to FileReference/Petit parser instance, so it is contained. You would use it on a (generic) Number and tie it to specific Bloc meaning. Maybe have a polymorphic Vector in regular Pharo (I would imagine that PolyMath could also make use of that)? Peter |
Hi,
Vector is not Bloc-sepcific. We just need it in Bloc and because there wasn’t any, we now have one in Bloc. But, it can be pulled out without any issues. Cheers, Doru > On Oct 25, 2017, at 8:21 PM, Peter Uhnák <[hidden email]> wrote: > > For example, in FileReference is adds a file extension. PetitParser uses it as a sequence operator. > > But in both cases #, is sent to FileReference/Petit parser instance, so it is contained. > You would use it on a (generic) Number and tie it to specific Bloc meaning. Maybe have a polymorphic Vector in regular Pharo (I would imagine that PolyMath could also make use of that)? > > Peter -- www.tudorgirba.com www.feenk.com "Obvious things are difficult to teach." |
In reply to this post by Tudor Girba-2
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". 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" <[hidden email]> > An: "Pharo Development List" <[hidden email]> > 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." > > > > > > |
In reply to this post by Tudor Girba-2
In Polymath I guess that the vectors are longer. But if I'm correct it
is #( 12 23) asVector. Doru did you look at Jun because Jun introduced 3DPoint and I wonder if they did not introduce Vector? What would be the alternatives for vector? Any idea how this is done in other languages 1~>2 1!2 1-}2 Stef On Wed, Oct 25, 2017 at 8:56 PM, Tudor Girba <[hidden email]> wrote: > Hi, > > Vector is not Bloc-sepcific. We just need it in Bloc and because there wasn’t any, we now have one in Bloc. But, it can be pulled out without any issues. > > Cheers, > Doru > > >> On Oct 25, 2017, at 8:21 PM, Peter Uhnák <[hidden email]> wrote: >> >> For example, in FileReference is adds a file extension. PetitParser uses it as a sequence operator. >> >> But in both cases #, is sent to FileReference/Petit parser instance, so it is contained. >> You would use it on a (generic) Number and tie it to specific Bloc meaning. Maybe have a polymorphic Vector in regular Pharo (I would imagine that PolyMath could also make use of that)? >> >> Peter > > -- > www.tudorgirba.com > www.feenk.com > > "Obvious things are difficult to teach." > > > > > |
2017-10-25 22:53 GMT+02:00 Stephane Ducasse <[hidden email]>:
In Polymath I guess that the vectors are longer. But if I'm correct it And I am wondering, Polymath already implements linear algebra. Right? Can we just use it in Bloc?
|
In reply to this post by Stephane Ducasse-3
I would note that 1 ! 2 creates/extends an ETuple in eLinda.
- HH
In Polymath I guess that the vectors are longer. But if I'm correct it is #( 12 23) asVector. Doru did you look at Jun because Jun introduced 3DPoint and I wonder if they did not introduce Vector? What would be the alternatives for vector? Any idea how this is done in other languages 1~>2 1!2 1-}2 Stef On Wed, Oct 25, 2017 at 8:56 PM, Tudor Girba wrote: > Hi, > > Vector is not Bloc-sepcific. We just need it in Bloc and because there wasn’t any, we now have one in Bloc. But, it can be pulled out without any issues. > > Cheers, > Doru > > >> On Oct 25, 2017, at 8:21 PM, Peter Uhnák wrote: >> >> For example, in FileReference is adds a file extension. PetitParser uses it as a sequence operator. >> >> But in both cases #, is sent to FileReference/Petit parser instance, so it is contained. >> You would use it on a (generic) Number and tie it to specific Bloc meaning. Maybe have a polymorphic Vector in regular Pharo (I would imagine that PolyMath could also make use of that)? >> >> Peter > > -- > www.tudorgirba.com > www.feenk.com > > "Obvious things are difficult to teach." > > > > > |
In reply to this post by Torsten Bergmann
Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: Hi, Like concatenating coordinates :-)
|
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 <[hidden email]> 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, [hidden email] <[hidden email]> wrote:
|
#(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 <[hidden email]> 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, [hidden email] <[hidden email]> 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 <[hidden email]> wrote: >>> >>> >>> >>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: >>> >>> 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" <[hidden email]> >>> > An: "Pharo Development List" <[hidden email]> >>> > 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." >>> > >>> > >>> > >>> > >>> > >>> > >>> >>> >> > |
Another question. Will not these vectors deprecate Point in future ? Imaging that we will completely move to Bloc. And what about Rectangle? (Bloc implements own BlRectangle). 2017-10-26 9:26 GMT+02:00 [hidden email] <[hidden email]>:
|
In reply to this post by Stephane Ducasse-3
Hi,
> On Oct 25, 2017, at 10:53 PM, Stephane Ducasse <[hidden email]> wrote: > > In Polymath I guess that the vectors are longer. Vectors can be longer. We just use 2D and 3D in Bloc. > But if I'm correct it > is #( 12 23) asVector. I like this one. We’ll definitely take a look. > Doru did you look at Jun because Jun introduced 3DPoint and I wonder > if they did not introduce Vector? I did not look at that. > What would be the alternatives for vector? > Any idea how this is done in other languages > > 1~>2 > 1!2 > 1-}2 Nope. Doru > Stef > > > On Wed, Oct 25, 2017 at 8:56 PM, Tudor Girba <[hidden email]> wrote: >> Hi, >> >> Vector is not Bloc-sepcific. We just need it in Bloc and because there wasn’t any, we now have one in Bloc. But, it can be pulled out without any issues. >> >> Cheers, >> Doru >> >> >>> On Oct 25, 2017, at 8:21 PM, Peter Uhnák <[hidden email]> wrote: >>> >>> For example, in FileReference is adds a file extension. PetitParser uses it as a sequence operator. >>> >>> But in both cases #, is sent to FileReference/Petit parser instance, so it is contained. >>> You would use it on a (generic) Number and tie it to specific Bloc meaning. Maybe have a polymorphic Vector in regular Pharo (I would imagine that PolyMath could also make use of that)? >>> >>> Peter >> >> -- >> www.tudorgirba.com >> www.feenk.com >> >> "Obvious things are difficult to teach." >> >> >> >> >> > -- www.tudorgirba.com www.feenk.com "One cannot do more than one can do." |
In reply to this post by Denis Kudriashov
Hi,
> On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <[hidden email]> 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. > 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 [hidden email] <[hidden email]>: > #(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 <[hidden email]> 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, [hidden email] <[hidden email]> 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 <[hidden email]> wrote: > >>> > >>> > >>> > >>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: > >>> > >>> 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" <[hidden email]> > >>> > An: "Pharo Development List" <[hidden email]> > >>> > 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." |
In reply to this post by Peter Uhnak
> On Oct 26, 2017, at 8:52 AM, Peter Uhnák <[hidden email]> wrote: > > Automatic formatting will turn it into > > vector := 1,3,4,5,7,-2. > > Which is not as nice. While this can be an issue, I see it as secondary, because formatting should help recognize intention, not force us to comply with a standard created by someone else. > 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. I am not sure I understand this point. Could you explain? > > Question: why not extend @ notation? > > x @ y @ z? We do not want that specific one because Vectors are not Points. At least not in our context. Doru > Peter > > > > On Thu, Oct 26, 2017 at 8:22 AM, [hidden email] <[hidden email]> 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 <[hidden email]> wrote: > > > Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: > 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" <[hidden email]> > > An: "Pharo Development List" <[hidden email]> > > 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 "Reasonable is what we are accustomed with." |
In reply to this post by Nicolai Hess-3-2
Hi,
> On Oct 26, 2017, at 7:00 AM, Nicolai Hess <[hidden email]> wrote: > > > > Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: > 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 :-) Indeed, this is what we see it as well. Doru > > > > 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" <[hidden email]> > > An: "Pharo Development List" <[hidden email]> > > 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 "Obvious things are difficult to teach." |
In reply to this post by Tudor Girba-2
2017-10-26 10:20 GMT+02:00 Tudor Girba <[hidden email]>:
Hi, 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.
|
Hi,
> On Oct 26, 2017, at 10:36 AM, Denis Kudriashov <[hidden email]> wrote: > > 2017-10-26 10:20 GMT+02:00 Tudor Girba <[hidden email]>: > Hi, > > On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <[hidden email]> 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 [hidden email] <[hidden email]>: > > #(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 <[hidden email]> 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, [hidden email] <[hidden email]> 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 <[hidden email]> wrote: > > >>> > > >>> > > >>> > > >>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: > > >>> > > >>> 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" <[hidden email]> > > >>> > An: "Pharo Development List" <[hidden email]> > > >>> > 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." |
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 <[hidden email]> wrote: > > Hi, > >> On Oct 26, 2017, at 10:36 AM, Denis Kudriashov <[hidden email]> wrote: >> >> 2017-10-26 10:20 GMT+02:00 Tudor Girba <[hidden email]>: >> Hi, >>> On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <[hidden email]> 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 [hidden email] <[hidden email]>: >>> #(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 <[hidden email]> 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, [hidden email] <[hidden email]> 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 <[hidden email]> wrote: >>>>>> >>>>>> >>>>>> >>>>>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <[hidden email]>: >>>>>> >>>>>> 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" <[hidden email]> >>>>>>> An: "Pharo Development List" <[hidden email]> >>>>>>> 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." |
Administrator
|
In reply to this post by Peter Uhnak
Peter Uhnák wrote
> But in both cases #, is sent to FileReference/Petit parser instance, so it > is contained. > You would use it on a (generic) Number and tie it to specific Bloc > meaning. Yes, this is exactly the problem. It is a reintroduction of a message like #name, which plagued us for so long. We appropriate the meaning of `aNumber, …` for the whole world. Now, if in MyCoolProject I want to implement aNumber>>#, I will break the system. Maybe we can follow the FS/PP pattern and scope the message to only-vector-like-things via an initial message, so just like `$f asParser, …`, have `1 {vector-appropriate-message}, …`? ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
Cheers,
Sean |
Free forum by Nabble | Edit this page |