[Pharo-dev] , for vector creation

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sat Oct 28 17:15:45 EDT 2017


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 <stepharo.self at gmail.com>:

> Ok good to know.
>
> On Fri, Oct 27, 2017 at 8:39 AM, Tudor Girba <tudor at tudorgirba.com> wrote:
> > Indeed, we have BlInsets that are used for either padding or margin.
> >
> > Doru
> >
> >> On Oct 26, 2017, at 11:43 PM, Stephane Ducasse <stepharo.self at gmail.com>
> 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 <tudor at tudorgirba.com>
> 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 <tudor at tudorgirba.com>
> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>>> On Oct 26, 2017, at 10:36 AM, Denis Kudriashov <dionisiydk at gmail.com>
> wrote:
> >>>>>
> >>>>> 2017-10-26 10:20 GMT+02:00 Tudor Girba <tudor at tudorgirba.com>:
> >>>>> Hi,
> >>>>>> On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <
> dionisiydk at gmail.com> 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 phil at highoctane.be <phil at highoctane.be>:
> >>>>>> #(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 <i.uhnak at gmail.com>
> 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, phil at highoctane.be <
> phil at highoctane.be> 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 <
> nicolaihess at gmail.com> wrote:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <
> astares at gmx.de>:
> >>>>>>>>>
> >>>>>>>>> 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 at 2 asVector
> >>>>>>>>>
> >>>>>>>>> or  Vector2D x: 1 y: 2
> >>>>>>>>>
> >>>>>>>>> Thx
> >>>>>>>>> T.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> Gesendet: Mittwoch, 25. Oktober 2017 um 20:06 Uhr
> >>>>>>>>>> Von: "Tudor Girba" <tudor at tudorgirba.com>
> >>>>>>>>>> An: "Pharo Development List" <pharo-dev at lists.pharo.org>
> >>>>>>>>>> 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."
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20171028/25f2b1b8/attachment-0002.html>


More information about the Pharo-dev mailing list