core.memoize is a Clojure contrib library providing the following features:
An underlying PluggableMemoization
protocol that
allows the use of customizable and swappable memoization caches that
adhere to the synchronous CacheProtocol
found in core.cache
Memoization builders for implementations of common caching strategies, including:
memo-fifo
)memo-lru
)memo-lu
)memo-ttl
)memo
) that duplicates the functionality of
Clojure’s memoize
functionFunctions for manipulating the memoization cache of
core.memoize
backed functions
Leiningen dependency information:
[org.clojure/core.memoize "0.5.4"]
Maven dependency information:
<dependency>
<groupId>org.clojure</groupId>
<artifactId>core.memoize</artifactId>
<version>0.5.4</version>
</dependency>
(ns my.cool.lib (:require [clojure.core.memoize :refer (memo-lu)])) (def id (memo-lu #(do (Thread/sleep 5000) v) 3)) (id 42) ; ... waits 5 seconds ;=> 42 (id 42) ; instantly ;=> 42
The v0.5.4 version of core.memoize works with the v0.6.3 version of core.cache. In addition, the following bugs have been fixed:
The following capabilities are under design, development, or consideration for future versions of core.memoize:
SoftCache
backed memoizationMore planning is needed around capabilities not listed nor thought of.