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

Tobias Pape Das.Linux at gmx.de
Fri Apr 3 00:41:44 UTC 2015


On 03.04.2015, at 02:39, Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com> wrote:

> 
> 
> 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?

Nothing in particular.
How would you write that?

Best
	-Tobias



More information about the Squeak-dev mailing list