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

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Fri Apr 3 00:39:45 UTC 2015


2015-04-03 1:52 GMT+02:00 Tobias Pape <Das.Linux at gmx.de>:

>
> 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
>
>
>
To me, the idea to not intern 'BaseSoundSystem' is moot.
We blatantly have a reference to #BaseSoundSystem that we try to hide. Why?

Nicolas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150403/ca1abb6d/attachment.htm


More information about the Squeak-dev mailing list