用例:我有一段工作良好的代码
(require '[clojure.core.cache :as cache])
(require '[clojure.core.memoize :as memo])
(import 'clojure.core.memoize.PluggableMemoization)
(defn lru-ttl-cache [base threshold ttl]
(-> base
(cache/lru-cache-factory :threshold threshold)
(cache/ttl-cache-factory :ttl ttl)))
(defn lru-ttl-memo
([f base threshold ttl]
(memo/build-memoizer
#(PluggableMemoization. %1 (lru-ttl-cache %4 %2 %3))
f
threshold
ttl
(@#'memo/derefable-seed base))))
但它依赖于一个私有变量。这应该真的是公开的,以便客户端可以更轻松地提供自己的实现。
顺便说一下,这些库很棒。我在 Clojure 生态系统中的工作很高兴。