2010/7/22 Henrik Johansen <henrik.s.johansen@veloxit.no>

On Jul 22, 2010, at 7:39 43PM, Eliot Miranda wrote:



2010/7/22 Sudhakar Krishnamachari <skrishnamachari@gmail.com>
And of course the extensibility it gives:

[ 1->'asd'. 2->'asd'. 3->'dsd' ] asDictionary

I think Travis Griggs' once is much much nicer:

�� �[{�1->'asd'. 2->'asd'. 3->'dsd' } asDictionary] once

when once is sent to a BlockClosure it becomes itself into a CachedBlockClosure that remembers and answers the evaluated value.
You could add selectors to this such as
�� �onceEachSession - destroy the cached value on image startup

It doesn't require any special compiler machinery (unlike ##(...)) and so there are no problems with browsing references or senders within compile-time evaluated forms. �It is easily extensible to different life-times. �It is portable.

my 2�

Eliot

I like once as well, after using it in VisualWorks.
For my tastes, it's uses just the right amount of magickery to both be able to easily understand how it works, and provide useful functionality.�

F.ex. I wrote a tool where I tagged (time-expensive) methods�I suspected of being invariants�during a large analysis, the tool then ran those methods wrapped in a once block, and told me which did not affect the end results.�
Much faster than a manual verification of whether they were really invariants, and provided an ok speedup for the amount of (brain) effort required :D

Only problem I've encountered in VW (7.7 at least), is the debugger raising an mnu �if you try to step into the once call of a CachedBlockClosure.

In Squeak 4.1 it seems fine :)


I really like Assets. �The whole framework is small, flexible, useful and easy to understand.

best
Eliot


Cheers,
Henry



_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project