I can just repeat myself. This is such a big impact and a huge step forward. 
Bravo!

Sadly there is other work to do.

Norbert

Am 21.07.2014 um 11:28 schrieb Marcus Denker <[email protected]>:

> Hello,
> 
> One of the questions with having meta objects for variables (Slots and 
> Globals) is: For what is is good?
> 
> Here is one example… in early stage but working.
> 
> Imagine you want to “hook into” instance variable access. It can be done with 
> e.g. bytecode manipulation, or
> on the AST level. But that is far from nice.
> 
> With the new first class variables, there is now a fun way to do it: 
> MetaLinks.
> 
> Make a class TT with an instance var “t” and add an accessor.
> 
> Now we can define a MetaLink: it describes a call to a meta object that we 
> wan to do before, after or instead
> of what our variable normally does. (default is #before):
> 
> | link |
> link :=  MetaLink new 
>       metaObject:  Halt;
>       selector: #now.
> 
> This link says: “do a Halt now before where I will get installed”.
> 
> To install the link, just get the Slot meta object and set it using #link:
> 
> (TT slotNamed: #t) link: link.
> 
> This sets the link by replacing the Slot with a LinkWrapper Slot, and then 
> recompiles all using methods. 
> 
> Thus evaluating:
> 
>       TT new t
> 
> will get you a #halt.
> 
> Lots of things are not yet implemented (multiple links, uninstall, 
> arguments,…)
> but it starts to show how simple one can do quite powerful things.
> 
>       Marcus
> 
> 
> 


Reply via email to