[CCACHE-31] SoftCaches update in-place, other cache types don't Created: 25/Jul/13 Updated: 22/Mar/16
I've successfully used SoftCaches in my project, and now I had the need for another simple cache, so I've created a BasicCache. Thereby, I fell into the trap that while SoftCaches update in-place, BasicCaches don't (and looking at the code, all other cache types except for aforementioned SoftCache don't, too).
So with every cache type except for SoftCaches, you have to use the return value of `miss` (and `evict`). But the documentation doesn't mention that at all. The typical has?/miss/hit snippets explaining the usage pattern also discard the value of `miss`.
IMHO, a cache is something mutable and should of course update in place. I mean, when you `(def C (some-cache...))`, are you really supposed to use `alter-var-root` or make the cache Var dynamic and use `set!`?
|Comment by Ambrose Bonnaire-Sergeant [ 04/Aug/14 1:52 PM ]|
Patch distinguishes between mutable and immutable caches, and classifies SoftCache and TTLCache as mutable.
|Comment by Alex Miller [ 22/Mar/16 10:33 AM ]|
Seems like renaming defcache breaks any external users of defcache?
A quick search of github https://github.com/search?l=clojure&q=defcache&type=Code&utf8=%E2%9C%93 shows many examples.