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.