R3 2.100.13 adds both select and find actions (datatype function methods) to the OBJECT datatype. But, we still have a decision to make and soon! Here's the situation...
Select is similar to the idiom getin. It returns the value bound to the word within the object's context:
For many years I avoided adding this usage of select, but I've recently been writing code where both the object and the selector word can optionally be NONE, and I don't want to wrap everything with extra conditional checks or all blocks. So, I caved-in and finally added it. Yell loudly if you think it's a mistake. (My inclination is that this is fine, but I'm not sure I'm as smart as I was in 2000. Maybe it is the red wine.)
The last two cases above highlight a long-standing minor issue with objects: you cannot detect the existence of a word via selection (you must use either in or the words-of function). It's not a big problem and in fact can be considered a feature because it has its uses.
However, with that in mind, find has been defined to work this way:
Here find tells you that the word is defined in the context, even though its value is NONE.
Of course, you can do roughly the same thing with the in function:
>> in obj 'b
== b
>> in obj 'c
== none
So the bigger question becomes: is there some other find feature that we may want to use on objects? For example, would it be more useful for find to search the value part of an object, as in:
>> find obj '10
== a
>> find obj "test"
== none
Please post your thoughts on this here in the comments section. Thanks.