In my own Smalltalk, a string understands a little over two thousand selectors, of which about 440 are specific to strings, the others being shared by other sequences. That's quite a lot to search through. As it happens, I *do* have a 'searching' category and the #findString:[startingAt:][ignoringCase:][ifAbsent:] methods are in it. The methods defined in the ANSI Smalltalk standard are #indexOfSubCollection:startingAt:[ifAbsent:] and are quite easy to find once you recall that methods for searching in a sequence generally have 'find' or 'indexOf' in their name. It is surprisingly hard to keep categories consistent. If there is a way to say "here I am browsing method M in category G of class C, is there an ancestor of C that puts the selector of M in a different category?" I would love to know it. (Adding such a code critic to my Smalltalk is on the TODO list.) On Tue, 26 Feb 2019 at 00:20, Tim Mackinnon <tim@testit.works> wrote:
I always struggle (even after years of casually using smalltalk) to find the String methods that do the heavy lifting (and are comparable to other languages). The methods are normally there, but they often have names that donât compare well with other languages.
I think that what doesnât help is the categorisation of methods in String - for example - if I want to do some searching in a String - why is #findString: in âaccessingâ - I totally didnât think to look in there. To be honest, I really wanted a protocol called âsearchingâ - but its not there?
I find the protocols in the system to be pretty bad in all honesty. Its a good idea, but I donât think its clear on whether its protocol, or category. And if the former - where are the tools to help ensure things conform to a protocol? If the latter - where are the useful, commonly used categories?
Are there any plans to do anything in this area - or is it just a lump it scenario?
Tim