2017-11-05 18:41 GMT+01:00 Nicolas Cellier <
[email protected]>:

> As for -1 , 0 , 1, we must encode 3 possible results:
>
> value1 is before value2 (<)
> value1 is same rank as value2 (=)
> value1 is after value2 (>)
>

While it is well known comparison logic I would like to find better name
than #compare/collate which reflects explicitly what you just described.
Something like:

sortFunction rank: anObject1 comparedTo: anObject2

 And according to this the current #threeWayCompareTo: can be renamed too:

anObject rankComparedTo: anObject2


Another idea is to have explicit meaning in the method name that it defines
ascending order of receiver compared to argument. I am always confused when
I need to implement a new block for sorted collection. I am usually not
know what result I will have: will it be ascending or descending. Because
block itself has no meaning about it and it only returns true or false.
Same confusion could happen during implementation of new
#threeWayCompareTo: method.
So I would use something like:

anObject rankInAscendingOrderTo: anObject2


Maybe it is bad in english. But I hope it shows my idea. So if you like it,
try suggest better names.


> Using numbers -1,0,+1 to encode these results is clever, because it's
> trivial to revert the order (just take the opposite, or multiply by -1)
> So it's widespread in programming community, it's cultural
>
> We could use any other convention like Symbols #(< = >), that would convey
> a bit more meaning,
> but there's no need to go against culture if we have no superior solution
> (wrt inversion)
>
> 2017-11-05 18:30 GMT+01:00 Nicolas Cellier <nicolas.cellier.aka.nice@
> gmail.com>:
>
>> Hi Stef
>>
>> Collation is the accurate and correct term
>> If I google: Unicode comparison algorithm for example, the first hit is:
>> UTS #10: Unicode Collation Algorithm - Unicode.org
>> http://unicode.org/reports/tr10/
>>
>> collationner (collate) has a second meaning, even in French:
>> https://fr.wiktionary.org/wiki/collationner
>>
>> Interestingly, the wikipedia page https://en.wikipedia.org/wiki/Collation
>> isn't even translated in French...
>> Maybe i's not popular enough in French (un mot savant)...
>> I'm not good enough in English to tell if it has same "snob" connotation
>>
>> Nicolas
>>
>> 2017-11-05 17:49 GMT+01:00 Stephane Ducasse <[email protected]>:
>>
>>> Hi nicolas
>>>
>>> where it is defined that collation is something returning -1, 0, 1?
>>> I'm always thinking to newcomers that have to learn yet another
>>> concept and here for nothing.
>>> Because SortFunction with a nice comment saying that it should return
>>> -1, 0, 1 looks simpler that CollatorFunction which tells me nothing,
>>> except that may be this is about drinking (for french).
>>>
>>>
>>> Stef
>>>
>>> On Sun, Nov 5, 2017 at 3:47 PM, Nicolas Cellier
>>> <[email protected]> wrote:
>>> >
>>> >
>>> > 2017-11-05 10:16 GMT+01:00 Esteban Lorenzano <[email protected]>:
>>> >>
>>> >>
>>> >>
>>> >> > On 5 Nov 2017, at 06:00, Stephane Ducasse <[email protected]>
>>> >> > wrote:
>>> >> >
>>> >> > Hi guys
>>> >> >
>>> >> > Why do we rename class Sort to introduce terms that have unknown,
>>> >> > unclear, undocumented meaning?
>>> >>
>>> >> +1
>>> >>
>>> >> >
>>> >> > To me PluggableSortFunction is MUCH better than
>>> CollatorBlockFunction.
>>> >>
>>> >> but pluggable is also bad, IMO.
>>> >> also I see there is some incoherence in the names:
>>> >
>>> >
>>> > agree with Esteban, Pluggable pouah!
>>> >
>>> >>
>>> >> ChainedSortFunction -> this is kind of ok, but I think a
>>> >> “ComposedSortFunction” is better.
>>> >
>>> >
>>> > But there can be several kind of composition...
>>> > For example wrapped as illustrated with UnderfinedSorter refactoring
>>> that I
>>> > proposed.
>>> > Personnally I like Chained because it explicitely tells the kind of
>>> > composition
>>> >
>>> >> SortByPropertyFunction -> shouldn’t be “PropertySortFunction”  ?
>>> (coherent
>>> >> with the previous one)
>>> >
>>> >
>>> > +1 for PropertySortFunction, or maybe just PropertySorter
>>> >
>>> >> CollatorSortFunction -> this is like a “BlockSortFunction” or
>>> >> “ValuableSortFunction” ?
>>> >
>>> >
>>> > CollatorBlockFunction is only a proxy to the block so as it answers to
>>> > #threeWayCompare:with: protocol rather than value:value:
>>> > It's a Block view as a CollatorFunction.
>>> > The name first surprised me negatively, but after reflexion it tells
>>> what it
>>> > is.
>>> >
>>> > 1) Collator indicates that the block (valuable) will return -1, 0 or +1
>>> >
>>> > 2) It's not necessarily a block, it could be anything understanding
>>> > value:value:
>>> > But, the valuable should return -1,0,+1, so apart <=>
>>> (threeWayCompareTo:)
>>> > it ain't gonna be anything but a block in practice.
>>> > For <=> we would want a DefaultSortFunction and would not use a
>>> > CollatorBlockFunction.
>>> >
>>> > 3) Function refers to SortFunction.
>>> > For this, I'm neutral, whether you call it Sorter or SortFunction I
>>> don't
>>> > care.
>>> > SortFunction kind of implies these are stateless, so it's a rather
>>> good and
>>> > accurate name.
>>> > Maybe a Sorter could be more confusing, because a Sorter could be
>>> thought as
>>> > having the sorted collection as instance variable (statefull).
>>> >
>>> > Nicolas
>>> >
>>> >>
>>> >> Esteban
>>> >>
>>> >> >
>>> >> > Stef
>>> >> >
>>> >>
>>> >>
>>> >
>>>
>>>
>>
>

Reply via email to