Re: #sortBlock:

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Julian Fitzell-2
On Thu, Dec 24, 2009 at 12:19 AM, Stéphane Ducasse
<[hidden email]> wrote:

>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>> an instance creation method. That's what it sounds like and shouldn't
>>>> be implemented on non-sorted collections.
>>>
>>> Why? what would be the reason not to use sortBlock: for others?
>>
>> The intention is different. #sortBlock: tells a collection to maintain
>> itself as sorted even after additions and deletions. This message is not
>> appropriate for collections that do not have that ability.
>>
>> #sortBlock: is not the best name for this functionality, but I think
>> it's bad to use #sortBlock: with a different meaning.
>
> I agree :)
> Now SortedCollection should understand sort too which uses sortBlock:
> My main concern is polymorphism between collection which are nearly the same!

#sortBlock: is an accessor for the sortBlock instance variable on
SortedCollection. It makes no sense for a collection that doesn't have
that instance variable to have that accessor. That's like saying Array
should implement #hashBlock: because PluggableSet has it...

Julian

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Stéphane Ducasse

On Dec 24, 2009, at 10:00 AM, Julian Fitzell wrote:

> On Thu, Dec 24, 2009 at 12:19 AM, Stéphane Ducasse
> <[hidden email]> wrote:
>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>> be implemented on non-sorted collections.
>>>>
>>>> Why? what would be the reason not to use sortBlock: for others?
>>>
>>> The intention is different. #sortBlock: tells a collection to maintain
>>> itself as sorted even after additions and deletions. This message is not
>>> appropriate for collections that do not have that ability.
>>>
>>> #sortBlock: is not the best name for this functionality, but I think
>>> it's bad to use #sortBlock: with a different meaning.
>>
>> I agree :)
>> Now SortedCollection should understand sort too which uses sortBlock:
>> My main concern is polymorphism between collection which are nearly the same!
>
> #sortBlock: is an accessor for the sortBlock instance variable on
> SortedCollection. It makes no sense for a collection that doesn't have
> that instance variable to have that accessor.

did I say that? I do not think so. I'm not that idiot.
No I say that SortedCollection should understand sort:

> That's like saying Array
> should implement #hashBlock: because PluggableSet has it...
>
> Julian
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Julian Fitzell-2
On Thu, Dec 24, 2009 at 1:26 AM, Stéphane Ducasse
<[hidden email]> wrote:

>
> On Dec 24, 2009, at 10:00 AM, Julian Fitzell wrote:
>
>> On Thu, Dec 24, 2009 at 12:19 AM, Stéphane Ducasse
>> <[hidden email]> wrote:
>>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>>> be implemented on non-sorted collections.
>>>>>
>>>>> Why? what would be the reason not to use sortBlock: for others?
>>>>
>>>> The intention is different. #sortBlock: tells a collection to maintain
>>>> itself as sorted even after additions and deletions. This message is not
>>>> appropriate for collections that do not have that ability.
>>>>
>>>> #sortBlock: is not the best name for this functionality, but I think
>>>> it's bad to use #sortBlock: with a different meaning.
>>>
>>> I agree :)
>>> Now SortedCollection should understand sort too which uses sortBlock:
>>> My main concern is polymorphism between collection which are nearly the same!
>>
>> #sortBlock: is an accessor for the sortBlock instance variable on
>> SortedCollection. It makes no sense for a collection that doesn't have
>> that instance variable to have that accessor.
>
> did I say that? I do not think so. I'm not that idiot.
> No I say that SortedCollection should understand sort:

Ah, apologies - I misunderstood what you were saying (I was a little
surprised that you would be arguing what I thought you were arguing :)
).

Julian

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Stéphane Ducasse
ouf honor is safe :)
So try to convince VA to do a better job than ANSI.
because with sort: polymorph and sorted (suboptimal but ok) we can have a better solution

Stef


>>>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>>>> be implemented on non-sorted collections.
>>>>>>
>>>>>> Why? what would be the reason not to use sortBlock: for others?
>>>>>
>>>>> The intention is different. #sortBlock: tells a collection to maintain
>>>>> itself as sorted even after additions and deletions. This message is not
>>>>> appropriate for collections that do not have that ability.
>>>>>
>>>>> #sortBlock: is not the best name for this functionality, but I think
>>>>> it's bad to use #sortBlock: with a different meaning.
>>>>
>>>> I agree :)
>>>> Now SortedCollection should understand sort too which uses sortBlock:
>>>> My main concern is polymorphism between collection which are nearly the same!
>>>
>>> #sortBlock: is an accessor for the sortBlock instance variable on
>>> SortedCollection. It makes no sense for a collection that doesn't have
>>> that instance variable to have that accessor.
>>
>> did I say that? I do not think so. I'm not that idiot.
>> No I say that SortedCollection should understand sort:
>
> Ah, apologies - I misunderstood what you were saying (I was a little
> surprised that you would be arguing what I thought you were arguing :)
> ).
>
> Julian
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Julian Fitzell-2
I'm pretty sure John was going to add #sort: at the level of
SequenceableCollection. As I mentioned, it is implemented in terms of
#at:put: and therefore errors reasonably on Interval.

We might require a special implementation for SortedCollection,
alright. I don't see why that would be a problem for them.

Julian

On Fri, Dec 25, 2009 at 1:08 AM, Stéphane Ducasse
<[hidden email]> wrote:

> ouf honor is safe :)
> So try to convince VA to do a better job than ANSI.
> because with sort: polymorph and sorted (suboptimal but ok) we can have a better solution
>
> Stef
>
>
>>>>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>>>>> be implemented on non-sorted collections.
>>>>>>>
>>>>>>> Why? what would be the reason not to use sortBlock: for others?
>>>>>>
>>>>>> The intention is different. #sortBlock: tells a collection to maintain
>>>>>> itself as sorted even after additions and deletions. This message is not
>>>>>> appropriate for collections that do not have that ability.
>>>>>>
>>>>>> #sortBlock: is not the best name for this functionality, but I think
>>>>>> it's bad to use #sortBlock: with a different meaning.
>>>>>
>>>>> I agree :)
>>>>> Now SortedCollection should understand sort too which uses sortBlock:
>>>>> My main concern is polymorphism between collection which are nearly the same!
>>>>
>>>> #sortBlock: is an accessor for the sortBlock instance variable on
>>>> SortedCollection. It makes no sense for a collection that doesn't have
>>>> that instance variable to have that accessor.
>>>
>>> did I say that? I do not think so. I'm not that idiot.
>>> No I say that SortedCollection should understand sort:
>>
>> Ah, apologies - I misunderstood what you were saying (I was a little
>> surprised that you would be arguing what I thought you were arguing :)
>> ).
>>
>> Julian
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Levente Uzonyi-2
On Fri, 25 Dec 2009, Julian Fitzell wrote:

> I'm pretty sure John was going to add #sort: at the level of
> SequenceableCollection. As I mentioned, it is implemented in terms of
> #at:put: and therefore errors reasonably on Interval.
>

Interval was just an example. Moving #sort: to SequenceableCollection
requires some changes in it's subclasses:
- ArrayedCollection (OK, nothing to do)
- LinkedList (Link is too general, a sort algorithm has to make
   assumptions about the links, requires a new implementation of mergesort)
- OrderedCollection (OK, easy to fix)
- Interval (OK, can't be sorted. Some errors can be avioded though.)
- SourceFileArray (who cares, it should be nuked anyway)
- Heap (it raises an error in response to #at:put:, but it can be
   sorted...)
- NSCollectionLimiter (?)

So the question is: what to do with LinkedList and Heap?


Levente

> We might require a special implementation for SortedCollection,
> alright. I don't see why that would be a problem for them.
>
> Julian
>
> On Fri, Dec 25, 2009 at 1:08 AM, Stéphane Ducasse
> <[hidden email]> wrote:
>> ouf honor is safe :)
>> So try to convince VA to do a better job than ANSI.
>> because with sort: polymorph and sorted (suboptimal but ok) we can have a better solution
>>
>> Stef
>>
>>
>>>>>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>>>>>> be implemented on non-sorted collections.
>>>>>>>>
>>>>>>>> Why? what would be the reason not to use sortBlock: for others?
>>>>>>>
>>>>>>> The intention is different. #sortBlock: tells a collection to maintain
>>>>>>> itself as sorted even after additions and deletions. This message is not
>>>>>>> appropriate for collections that do not have that ability.
>>>>>>>
>>>>>>> #sortBlock: is not the best name for this functionality, but I think
>>>>>>> it's bad to use #sortBlock: with a different meaning.
>>>>>>
>>>>>> I agree :)
>>>>>> Now SortedCollection should understand sort too which uses sortBlock:
>>>>>> My main concern is polymorphism between collection which are nearly the same!
>>>>>
>>>>> #sortBlock: is an accessor for the sortBlock instance variable on
>>>>> SortedCollection. It makes no sense for a collection that doesn't have
>>>>> that instance variable to have that accessor.
>>>>
>>>> did I say that? I do not think so. I'm not that idiot.
>>>> No I say that SortedCollection should understand sort:
>>>
>>> Ah, apologies - I misunderstood what you were saying (I was a little
>>> surprised that you would be arguing what I thought you were arguing :)
>>> ).
>>>
>>> Julian
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: #sortBlock:

Stéphane Ducasse
In reply to this post by Julian Fitzell-2
> I'm pretty sure John was going to add #sort: at the level of
> SequenceableCollection. As I mentioned, it is implemented in terms of
> #at:put: and therefore errors reasonably on Interval.

Ok
Now Pharo has it :)
But not yet sorted.

>
> We might require a special implementation for SortedCollection,
> alright. I don't see why that would be a problem for them.
>
> Julian
>
> On Fri, Dec 25, 2009 at 1:08 AM, Stéphane Ducasse
> <[hidden email]> wrote:
>> ouf honor is safe :)
>> So try to convince VA to do a better job than ANSI.
>> because with sort: polymorph and sorted (suboptimal but ok) we can have a better solution
>>
>> Stef
>>
>>
>>>>>>> #sortBlock: is defined by ANSI on SortedCollection as an accessor and
>>>>>>>>> an instance creation method. That's what it sounds like and shouldn't
>>>>>>>>> be implemented on non-sorted collections.
>>>>>>>>
>>>>>>>> Why? what would be the reason not to use sortBlock: for others?
>>>>>>>
>>>>>>> The intention is different. #sortBlock: tells a collection to maintain
>>>>>>> itself as sorted even after additions and deletions. This message is not
>>>>>>> appropriate for collections that do not have that ability.
>>>>>>>
>>>>>>> #sortBlock: is not the best name for this functionality, but I think
>>>>>>> it's bad to use #sortBlock: with a different meaning.
>>>>>>
>>>>>> I agree :)
>>>>>> Now SortedCollection should understand sort too which uses sortBlock:
>>>>>> My main concern is polymorphism between collection which are nearly the same!
>>>>>
>>>>> #sortBlock: is an accessor for the sortBlock instance variable on
>>>>> SortedCollection. It makes no sense for a collection that doesn't have
>>>>> that instance variable to have that accessor.
>>>>
>>>> did I say that? I do not think so. I'm not that idiot.
>>>> No I say that SortedCollection should understand sort:
>>>
>>> Ah, apologies - I misunderstood what you were saying (I was a little
>>> surprised that you would be arguing what I thought you were arguing :)
>>> ).
>>>
>>> Julian
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project