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