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