úÎ!> <      (c) 2018 Henri VerrokenBSD3(Henri Verroken <henriverroken@gmail.com>stableNone§cache+A container data type holding a cache item.cacheThe cache with keys of type k and values of type v.Create caches with the newCache and  copyCache functions.cache8The default expiration value of newly added cache items.See newCache6 for more information on the default expiration value.cacheGet the current time in the   monad using !.  (c) 2016 Henri VerrokenBSD3(Henri Verroken <henriverroken@gmail.com>stableNone;F cache?Change the default expiration value of newly added cache items.See  6 for more information on the default expiration value. cachePCreate a new cache with a default expiration value for newly added cache items.OItems that are added to the cache without an explicit expiration value (using 5) will be inserted with the default expiration value.-If the specified default expiration value is ", items inserted by  will never expire. cacheSTM variant of  cache Create a deep copy of the cache.cacheSTM variant of cache6Return the size of the cache, including expired items.cacheSTM variant of .cacheLDelete an item from the cache. Won't do anything if the item is not present.cacheHLookup an item with the given key, but don't delete it if it is expired.dThe function will only return a value if it is present in the cache and if the item is not expired.5The function will not delete the item from the cache.cacheBLookup an item with the given key, and delete it if it is expired.dThe function will only return a value if it is present in the cache and if the item is not expired.JThe function will eagerly delete the item from the cache if it is expired.cache'Lookup an item with a given key in the   monad, given the current # time.STM variant of  and cacheHInsert an item in the cache, with an explicit expiration value, in the   monad.If the expiration value is "T, the item will never expire. The default expiration value of the cache is ignored.%The expiration value is the absolute #D time the item expires. You should manually construct the absolute #' time, as opposed to the behaviour of .E.g. “action :: Cache -> IO () action c = do t <- getTime Monotonic let t' = t + (defaultExpiration c) atomically $ insertSTM 0 0 c (Just t')cache?Insert an item in the cache, with an explicit expiration value.If the expiration value is "T, the item will never expire. The default expiration value of the cache is ignored.0The expiration value is relative to the current #= time, i.e. it will be automatically added to the result of getTime Monotonic.cacheNInsert an item in the cache, using the default expiration value of the cache.cache¿Get a value from cache. If not available from cache, use the provided action and update the cache. Note that the cache check and conditional execution of the action is not one atomic action.cacheSTM variant of .cache%Return all keys present in the cache.cacheKeeps elements that satify a predicate (used for cache invalidation). Note that the predicate might be called for expired items.cache)Delete all elements (cache invalidation).cacheSTM variant of .The $ argument should be the current # time, i.e. getTime Monotonic.cache"Delete all items that are expired.!This is one big atomic operation.cache‚Returns the cache content as a list. The third element of the tuple is the expiration date. Nothing means that it doesn't expire.cache8Whether or not to eagerly delete the item if its expiredcacheThe key to lookupcache The cachecache The current # time, i.e. getTime Monotonic   %      !"#!"$!%&'()'(*+$cache-0.1.3.0-7q3OTTCAkl5HLikUMDhiN2Data.Cache.Internal Data.Cache CacheItemitemitemExpirationCache containerdefaultExpirationnowSTMsetDefaultExpirationnewCache newCacheSTM copyCacheSTM copyCachesizeSTMsize deleteSTMdeletelookup'lookup lookupSTM insertSTMinsert'insertfetchWithCachekeysSTMkeys filterWithKeypurgepurgeExpiredSTM purgeExpiredtoListbase GHC.Conc.SyncSTM unsafeIOToSTM GHC.MaybeNothing clock-0.8-H1S1zDefxirImaRbI6ITNv System.Clock MonotonicTimeSpec