Hi nicolas
With current implementation, collatedInFrench would have to use a block (thru a CollatorBlockFunction which is a proxy to the block in a SortFunction disguise):
Symbol>>collatedInFrench "interpret self as a property" ^[:a :b | FrenchCollator collate: (self value: a) with: (self value: b)]
But IMO SortByPropertyFunction should better feed a reified CollatorFunction, or said differently a SortFunction, as Denis said.
(I should say that I do not like collator as a name. It does not mean anything to me.) Now in general I think that we are abusing blocks like in Glamour (because we want compact syntax). My rule of thumb to compare little class vs. block is - do we have optional state? - do we have many arguments (where we have to learn by heart the order)?
Symbol>>collatedInFrench ^FrenchCollator new onProperty: self
SortFunction>>onProperty: aValuable ^SortByPropertyFunction sortProperty: aValuable with: self
What do you think?
Nicolas