About Smalltalk at: .... ifAbsent:/present:

Andreas Raab andreas.raab at gmx.de
Tue Nov 30 14:48:27 UTC 2004


> So given that - how do we fix it? Introduce a new way to refer to
> "globals", some kind of "binding" object?

The simplest way is probably to introduce a pseudo-operator like for 
example, "&" to refer to the binding object. For example:

    &Foo isUndeclared "answers true if binding is undeclared"
    &Foo ifUndeclared:[...] "eval if binding is undeclared"
    &Foo ifAbsent:[...]. "eval if binding's value isn't present"

etc. with &Foo being a simple compiler hack which instead of emitting 
pushLiteralVariable bytecode (e.g., pushing the value of the binding) merely 
emits pushLiteralConstant (e.g., pushing the binding itself).

(note that in order to do this it would be extremely worthwhile to get away 
from using Associations and instead make some specific VariableBinding 
objects which implement the above methods)

Cheers,
  - Andreas




More information about the Squeak-dev mailing list