Hi Eliot.

2017-01-25 19:56 GMT+01:00 Eliot Miranda <eliot.mira...@gmail.com>:

> Hi Ben,
>
>     via FaceBook via twitter I hear you've coined
> BlockClosure>>#memoized.  Allow me to beg you to rename it to
> BlockClosure>>#once.  There's a preexisting implementation of this in
> VisualWorks by Travis Griggs called once.  I hope you agree that it's good
> to eliminate gratuitous incompatibilities between dialects and that "once"
> is an elegant name.
>

#once is not the same as #memoized. #memoized returns another block which
wrap original one to perform some caching. Actually I not understand logic
behind it.
But #once supposed to evaluate receiver while #memoized creates new block.

In Pharo 6 I pushed new method #asMethodConst. Unfortunately I was not
aware about #once from VisualWorks at this time and reviewers too.
But #asMethodConst is a bit different. It is Object method instead of
Block. And it is based on AST modification.
When asMethodConst is executed it replace executing AST-node of sender with
receiver which produce new method where full message node is replaced by
result as literal.
I put mode details here
http://dionisiydk.blogspot.fr/2016/07/magic-with-pharo-reflectivity.html.
In short you can write expressions like:

10 factorial asMethodConst

Reply via email to