<div><br><div class="gmail_quote"><div>On Tue 4. Apr 2017 at 19:05, Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu">leves@caesar.elte.hu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, 4 Apr 2017, Eliot Miranda wrote:<br class="gmail_msg">
<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> On Apr 4, 2017, at 7:02 AM, Bert Freudenberg <<a href="mailto:bert@freudenbergs.de" class="gmail_msg" target="_blank">bert@freudenbergs.de</a>> wrote:<br class="gmail_msg">
><br class="gmail_msg">
>       On Tue, Apr 4, 2017 at 3:47 PM, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="gmail_msg" target="_blank">eliot.miranda@gmail.com</a>> wrote:<br class="gmail_msg">
>             Hi Levente,<br class="gmail_msg">
><br class="gmail_msg">
>             > On Apr 3, 2017, at 11:14 AM, Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" class="gmail_msg" target="_blank">leves@caesar.elte.hu</a>> wrote:<br class="gmail_msg">
>             ><br class="gmail_msg">
>             >  The correct solution is:<br class="gmail_msg">
>             ><br class="gmail_msg">
>             > Array streamContents: [ :stream |<br class="gmail_msg">
>             >    Smalltalk globals associationsDo: [ :binding |<br class="gmail_msg">
>             >        binding class == Global ifTrue: [ stream nextPut: binding ] ] ].<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Or shorter <br class="gmail_msg">
><br class="gmail_msg">
>     Smalltalk globals declarations select: #canAssign<br class="gmail_msg">
><br class="gmail_msg">
> maybe? Unlike class bindings, global vars are writable.<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> I don't like this.  I see writability as orthogonal.  I'm sure there's good uses for read-only globals that are not classes.  I like the tenseness though.  So<br class="gmail_msg">
>     Smalltalk globals declarations reject: #isClassBinding<br class="gmail_msg">
><br class="gmail_msg">
> with<br class="gmail_msg">
> isClassBinding ^value isBehavior and: [key == value name]<br class="gmail_msg">
<br class="gmail_msg">
Why not just ^true?<br class="gmail_msg">
It's a ClassBinding even if it's not initialized properly. And that should<br class="gmail_msg">
be the Environment's responibility.<br class="gmail_msg">
<br class="gmail_msg">
><br class="gmail_msg">
>        <br class="gmail_msg">
>       Why not<br class="gmail_msg">
><br class="gmail_msg">
>       Array streamContents: [ :stream |<br class="gmail_msg">
>          Smalltalk globals associationsDo: [ :binding |<br class="gmail_msg">
>              (binding class == Global<br class="gmail_msg">
>              and: [ binding value isBehavior<br class="gmail_msg">
>              and: [ binding key == binding value name ] ]) ifTrue:<br class="gmail_msg">
>                   [ stream nextPut: binding ] ] ].<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Because we want to know the global *variables*, that is everything *but* the class bindings. So we look for instances of Global, not ClassBinding, no matter the value.<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Forgive me; I missed a not in there.  But my point is that the classes in global are in bindings whose keys are == to their name.  Everything else is a global variable.<br class="gmail_msg">
<br class="gmail_msg">
We have separate subclasses: ClassBinding and Global. We should use those.<br class="gmail_msg">
<br class="gmail_msg">
Levente<br class="gmail_msg">
</blockquote><div><br></div><div><br></div><div>Yep. Besides, with renaming on import the name of the class is not necessarily the same as its binding key.</div><div><br></div><div>- Bert -</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
>       > The role of declarations and bindings is still not clear in Environments, therefore, as I wrote it before, unrelated to tool support, I still consider Environments to be incomplete.<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> I thought 'declarations' are the things owned by this environment (excluding imports), whereas 'bindings' are the things visible in this environment (including imports).<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Is there a definition in text somewhere?  Colin?<br class="gmail_msg">
><br class="gmail_msg">
>       - Bert -<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
</blockquote></div></div>