An implementation of lrucaches based on a blogpost by Jasper Van der Jeugt.
This package has no relation to
lrucache. I created it
because there were bugs in
lrucache and the maintainer was not
responding to issues.
The easiest way to use this library is to use
Data.LruCache.IO. This wraps the
cache in a
Data.IORef, a mutable varible in the
e.g. To create a
1000-item cache, keyed by
import qualified Data.LruCache.IO as LRU newCache :: IO (LRU.LruHandle Integer String) newCache = LRU.newLruHandle 1000 cachedLookup cache key = LRU.cached cache key $ -- insert some something expensive return $ show key main :: IO () main = do cache <- newCache cachedLookup cache 123 >>= putStrLn
- Allow vector == 0.12.*
- Do not use hspec-discover. This allows building the tests using
Data.LruCache.IO.Finalizerfor automatically running finalizer when evicting cache entrvies.
- Fix build with GHC 7.8
- Don’t clear cache on clock overflow. This means that elements are never evicted without notifying the user via insertView.