[squeak-dev] The Trunk: EToys-topa.121.mcz

Tobias Pape Das.Linux at gmx.de
Thu Apr 2 23:52:57 UTC 2015


On 03.04.2015, at 01:44, Chris Muller <asqueaker at gmail.com> wrote:

> On Thu, Apr 2, 2015 at 6:32 PM, Tobias Pape <Das.Linux at gmx.de> wrote:
>> 
>> On 03.04.2015, at 01:00, Chris Muller <asqueaker at gmail.com> wrote:
>> 
>>> On Thu, Apr 2, 2015 at 5:52 PM, Tobias Pape <Das.Linux at gmx.de> wrote:
>>>> Hi,
>>>> 
>>>> On 03.04.2015, at 00:32, Levente Uzonyi <leves at elte.hu> wrote:
>>>> 
>>>>> I prefer to use Symbols instead of Strings for class names, because they make it easier to find potential users of the class.
>>> 
>>> +1
>>> 
>>>> yes, but #hasClassNamed: is a String protocol.
>>> 
>>> A Symbol is a String.  Many (if not all) existing users of
>>> hasClassNamed: pass Symbols (a special kind of String).
>> 
>> I don't want to rely on that.
>> Symbols being Strings is an implementation detail.
> 
> Symbols logically ARE Strings, regardless of implementation.  They're
> a series of characters just canonicalized.  Its only the
> canonicalization that's implementation-specific, not equality or type
> testing..

Nope. The idea of a symbol is (IMHO, admittedly) broader than 
just canonicalized Strings. If it where, I would call it InternedString
or CanonicalizedString. Symbols are unique human readable identifiers.

See Prolog, where the concept is called Atoms. There is no conceptual 
differences. Yet, Prolog atoms do not remotely compare to interned strings.

> 
>> Looking at the broader picture, in GemStone, in fact
>> a Symbol is not a String.
> 
> Object name  "#Object"  <---- a Symbol.
> 
> So why do you say #hasClassNamed: a "String protocol" instead of a
> "Symbol protocol"?

See #classOrTraitNamed: (which is called by #classNamed:)

classOrTraitNamed: aString 
	"aString is either a class or trait name or a class or trait name followed by ' class' or 'classTrait' respectively.
	Answer the class or metaclass it names."

and 

hasClassNamed: aString
	"Answer whether there is a class of the given name, but don't intern aString if it's not alrady interned.  4/29/96 sw"


Best
	-Tobias



More information about the Squeak-dev mailing list