Enabling memoization of a function is composed of two distinct steps:
A cache, an instance of memento.base/Cache, can contain entries from multiple functions and can be shared between memoized functions. Each memoized function is bound to a Cache via MountPoint.
Creating a cache is done by using memento.core/create, which takes a map of configuration (called cache conf).
You can use the resulting Cache with multiple functions. The configuration properties (map keys) can be found
in memento.config and memento.guava.config, look for "Cache setting" in docstring.
If memento.config/enabled? is false, this function always returns memento.base/no-cache, which is a Cache
implementation that doesn't do any caching. You can set this at start-up by specifying java property:
-Dmemento.enabled=false.
Binding the cache to a function is done by memento.core/bind. Parameters are:
Mount conf is either a map of mount point configuration properties, or a shorthand (see below).
The configuration properties (map keys) can be found in memento.config, look for "function bind" in docstring.
Instead of map of properties, mount conf can be a shorthand, which has the following two shorthands:
[:some-keyword :another-keyword] -> {:memento.core/tags [:some-keyword :another-keyword]}:a-keyword -> {:memento.core/tags [:a-keyword]}You can combine both functions into 1 call using memento.core/memo.
(m/memo fn-or-var mount-conf cache-conf)
To make things shorter, there's a 2-arg variant that allows that you specify both configurations at once:
(m/memo fn-or-var conf)
If conf is a map, then all the properties valid for mount conf are treated as such. The rest is passed to cache create. If conf is a mount conf shorthand then cache conf is considered to be {}. E.g.
(m/memo my-fn :my-tag)
This creates a memoized function tagged with :my-tag bound to a cache that does no caching.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |