Implements an LRU cache.
The interface this module provides is opaque. If further control is desired, the Data.Cache.LRU.Internal module can be used.
- data LRU key val
- newLRU :: Ord key => Int -> LRU key val
- fromList :: Ord key => Int -> [(key, val)] -> LRU key val
- toList :: Ord key => LRU key val -> [(key, val)]
- maxSize :: LRU key val -> Int
- insert :: Ord key => key -> val -> LRU key val -> LRU key val
- lookup :: Ord key => key -> LRU key val -> (LRU key val, Maybe val)
- delete :: Ord key => key -> LRU key val -> (LRU key val, Bool)
- size :: LRU key val -> Int
Make an LRU. The LRU is guaranteed to not grow above the specified number of entries.
Build a new LRU from the given maximum size and list of contents, in order from most recently accessed to least recently accessed.
Retrieve a list view of an LRU. The items are returned in order from most recently accessed to least recently accessed.
Add an item to an LRU. If the key was already present in the LRU, the value is changed to the new value passed in. The item added is marked as the most recently accessed item in the LRU returned.
If this would cause the LRU to exceed its maximum size, the least recently used item is dropped from the cache.
Look up an item in an LRU. If it was present, it is marked as the most recently accesed in the returned LRU.
Remove an item from an LRU. Returns the new LRU, and if the item was present to be removed.