>>> 
>>> Is this now used in Squeak? Is it worth the complexity?
>> 
>> Squeak doesn't use ReadOnlyVariableBinding anymore. The bindings of 
>> classes are instances of the ClassBinding class.
>> Without using separate class it's a bit cumbersome (and less OO) to decide 
>> if an assignment to a global variable should be allowed or not. E.g.:
>> 
>>      Foo := 1.
>> 
>> should work if Foo is a global, but not a behavior. It should raise an 
>> error if it's a behavior.
> 
> I have mixed feelings about that. In most Smalltalks one can write something
> like the following and expect it to work.
> 
> | original |
> original := SomeClass.
> [SomeClass := SomeReplacementClass.
> ... some code involving SomeClass (typically a passed in Block) ...
> ] ensure: [SomeClass := original]
> 
> That is, the name of the thing is not the thing itself.
> 
> Of course, as long as one could write /Smalltalk at: #SomeClass put:
> SomeReplacementClass/, it would still be possible to achieve the same
> effect. (And of course, "Smalltalk" could be any namespace.)
> 

I think the original idea was to make the system more resilient for end-user 
Scripting. To make sure people do not do by accident

        True := nil.


        Marcus

Reply via email to