I'm not sure. I thought Spy would use them but it does not load in a fresh pharo3 for me. Did you try http://www.squeaksource.com/ObjectsAsMethodsWrap/ <http://www.squeaksource.com/ObjectsAsMethodsWrap/> ? Norbert
Am 04.11.2014 um 11:53 schrieb phil@highoctane.be:
On Tue, Nov 4, 2014 at 9:59 AM, Norbert Hartl <norbert@hartl.name <mailto:norbert@hartl.name>> wrote: Ghost won't be a big help here. Slots would be a good solution but not if it needs to be removable on runtime. So it seems MethodWrappers is your best bet. I'd try create a caching MethodWrapper, mark all the needed methods with a pragma and then install the MethodWrapper on these. Could be a package wide install/uninstall if you need that.
I loaded MethodWrappers in 3.0 as I saw in http://forum.world.st/MethodWrappers-td3829576.html#a4601624 <http://forum.world.st/MethodWrappers-td3829576.html#a4601624>
Gofer it squeaksource: 'MethodWrappers'; package: 'MethodWrappers4'; load.
It loads.
But no test seems to be fine.
<image.png>
What version should I be using?
Phil
Norbert
Am 04.11.2014 um 07:03 schrieb "phil@highoctane.be <mailto:phil@highoctane.be>" <phil@highoctane.be <mailto:phil@highoctane.be>>:
Le 3 nov. 2014 22:13, "Hilaire" <hilaire@drgeo.eu <mailto:hilaire@drgeo.eu>> a écrit :
What's wrong with?
myData ^ data ifNil: [data := self computeMe]
That I do have a lot of places like this and do not want these data littering the code.
Aspects would solve this but we do not have that.
Also I need the mechanism to be removable.
So, I read something about MethodWrapper, ghost, slots... Can't one use any of these things to do this memoization cleanly?
Phil
Le 03/11/2014 16:10, phil@highoctane.be <mailto:phil@highoctane.be> a écrit :
How can I do memoization in Pharo?
I mean, a generic mechanism that will help me wrap the caching around the method invocations / messages.
I have expensive calls that do not have to refresh their results as often as they are called.
TIA Phil
-- Dr. Geo - http://drgeo.eu <http://drgeo.eu/> iStoa - http://istoa.drgeo.eu <http://istoa.drgeo.eu/>