<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-04-03 1:52 GMT+02:00 Tobias Pape <span dir="ltr"><<a href="mailto:Das.Linux@gmx.de" target="_blank">Das.Linux@gmx.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><br>
On 03.04.2015, at 01:44, Chris Muller <<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>> wrote:<br>
<br>
> On Thu, Apr 2, 2015 at 6:32 PM, Tobias Pape <<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>> wrote:<br>
>><br>
>> On 03.04.2015, at 01:00, Chris Muller <<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>> wrote:<br>
>><br>
>>> On Thu, Apr 2, 2015 at 5:52 PM, Tobias Pape <<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>> wrote:<br>
>>>> Hi,<br>
>>>><br>
>>>> On 03.04.2015, at 00:32, Levente Uzonyi <<a href="mailto:leves@elte.hu">leves@elte.hu</a>> wrote:<br>
>>>><br>
>>>>> I prefer to use Symbols instead of Strings for class names, because they make it easier to find potential users of the class.<br>
>>><br>
>>> +1<br>
>>><br>
>>>> yes, but #hasClassNamed: is a String protocol.<br>
>>><br>
>>> A Symbol is a String. Many (if not all) existing users of<br>
>>> hasClassNamed: pass Symbols (a special kind of String).<br>
>><br>
>> I don't want to rely on that.<br>
>> Symbols being Strings is an implementation detail.<br>
><br>
> Symbols logically ARE Strings, regardless of implementation. They're<br>
> a series of characters just canonicalized. Its only the<br>
> canonicalization that's implementation-specific, not equality or type<br>
> testing..<br>
<br>
</span>Nope. The idea of a symbol is (IMHO, admittedly) broader than<br>
just canonicalized Strings. If it where, I would call it InternedString<br>
or CanonicalizedString. Symbols are unique human readable identifiers.<br>
<br>
See Prolog, where the concept is called Atoms. There is no conceptual<br>
differences. Yet, Prolog atoms do not remotely compare to interned strings.<br>
<span class=""><br>
><br>
>> Looking at the broader picture, in GemStone, in fact<br>
>> a Symbol is not a String.<br>
><br>
> Object name "#Object" <---- a Symbol.<br>
><br>
> So why do you say #hasClassNamed: a "String protocol" instead of a<br>
> "Symbol protocol"?<br>
<br>
</span>See #classOrTraitNamed: (which is called by #classNamed:)<br>
<br>
classOrTraitNamed: aString<br>
"aString is either a class or trait name or a class or trait name followed by ' class' or 'classTrait' respectively.<br>
Answer the class or metaclass it names."<br>
<br>
and<br>
<br>
hasClassNamed: aString<br>
"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"<br>
<br>
<br>
Best<br>
<span class=""><font color="#888888"> -Tobias<br>
<br>
<br></font></span></blockquote><div><br></div><div>To me, the idea to not intern 'BaseSoundSystem' is moot.<br></div><div>We blatantly have a reference to #BaseSoundSystem that we try to hide. Why?<br><br></div><div>Nicolas<br> </div></div><br></div></div>