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 <tu...@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 <tu...@tudorgirba.com> wrote:
>>
>> Hi,
>>
>>> On Oct 26, 2017, at 10:36 AM, Denis Kudriashov <dionisi...@gmail.com> wrote:
>>>
>>> 2017-10-26 10:20 GMT+02:00 Tudor Girba <tu...@tudorgirba.com>:
>>> Hi,
>>>> On Oct 26, 2017, at 10:10 AM, Denis Kudriashov <dionisi...@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 p...@highoctane.be <p...@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.uh...@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, p...@highoctane.be <p...@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 <nicolaih...@gmail.com> 
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Am 25.10.2017 10:50 PM schrieb "Torsten Bergmann" <asta...@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@2 asVector
>>>>>>>
>>>>>>> or  Vector2D x: 1 y: 2
>>>>>>>
>>>>>>> Thx
>>>>>>> T.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Gesendet: Mittwoch, 25. Oktober 2017 um 20:06 Uhr
>>>>>>>> Von: "Tudor Girba" <tu...@tudorgirba.com>
>>>>>>>> An: "Pharo Development List" <pharo-dev@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."
>
>
>
>
>
>
>
>
>

Reply via email to