Nothing new, that's the term.

Memoization: After computing a solution to a subproblem, store it in a
table. Subsequent calls check the table to avoid redoing work.

https://en.wikipedia.org/wiki/Memoization

http://www.cas.mcmaster.ca/~deza/6_Dynamic++.pdf

http://wiki.tcl.tk/10779

I have been using the method for something else, caching costly REST calls.

getIssueCreateMeta
"Retrieves the metadata for all types of issues. Fields are expanded"
^ self isMemoizingMeta
ifTrue: [ ([ :ignored | self getIssueCreateMetaWithExpandKeys: true ]
memoizedUsing: self cache ) value: #issueCreateMeta ]
ifFalse: [ self getIssueCreateMetaWithExpandKeys: true ]


using:

cache
^ cache ifNil: [cache := LRUCache new maximumWeight: self
defaultCacheWeight ]

It is nice to see the cache hit rate etc in the inspector.

BTW I am interested to see how one coul dwrite the code above without
repeating the block.
Also, :ignored is not used by the method but is the cache key.

Phil

On Wed, Jan 25, 2017 at 10:30 PM, Igor Stasenko <siguc...@gmail.com> wrote:

> #once can be interpreted as 'evaluate it once',
>
> but i don't like the #memoized .. it sounds painful to my ears.
> It sounds like something stinking smeared across my face.. and i always
> got stuck,confused and lost as the meaning of it always
> escaping my mind, since it naturally defends itself from any unpleasant
> thoughts.
>
> IMHO, maybe #once is not the best wording for what it does , but
> #memoizing... yuck.. pardon me.
>
>  :)
>
>
> --
> Best regards,
> Igor Stasenko.
>

Reply via email to