2017-11-07 11:24 GMT+01:00 Denis Kudriashov <dionisiydk@gmail.com>:
2017-11-07 9:23 GMT+01:00 Nicolas Cellier <nicolas.cellier.aka.nice@gmai l.com>:
I have other ideas yet.
The selector undefinedFirst is good, but the implementation not so. I don't like the UndefinedSortFunction: too specific, compose oddly...
In the PR, collatedBy: is the way to tell how we sort properties (if you have a better name, go, it's bikesheding day)
"sort by size of name" (people sorted: (#name collatedBy: #size)) = (people sorted: [:p| p name size])
It is nice idea but it should be not bound to sort functions. Because this feature is useful for other block based messages:
people collect: #name >> #size
people select: #name >> #size >> #even
(I use >> as example). Generally it is about functional programming. Would be nice to have this in image because it will simplify scripting a lot. I remember nice set of blog posts from Vassili Bykov about such kind of things http://blog.3plus4.org/2007/03/.
This code has a cost, however. First, it's rather slow (hidden #perform: in there). Second, I had a first hand experience that it is making it significantly more complex to understand for newcomers (implying that it creates additional, special semantics compared to basic smalltalk). I know that there is no special semantic involved, but it looks as if to practitionners of other programming languages and their complex semantics. I do like the SortFunctions idea (and its extension), but it's important IMHO to not make it too cryptic. Regards, Thierry