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 (>)
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 < [email protected]>: > 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 >> >> > >> >> >> >> >> > >> >> >
