!)$I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHNone.=>?@ACEHMPSVXq cachingDAtomically mutate the contents of a reference with trace data outputcachingStrict version of atomicModifyRefTraced. This forces both the value stored in the reference as well as the value returned but not the trace.cachingRStrict Monadic update function so that tracing is closer to zero cost when unused.  None.=>?@ACEHMSUVX-cachingDA reified Caching dictionary so that we can assemble them on demand.5cachingc - The cache type. m - The Monad. k - The key. t - The tracking data. This allows caches to store metadata for 3rd parties. v - The value. -./0123456789:;<=>?34:;=<>? 56789-./012None.>HX IcachingCWe need a variant with 2 queues to handle rollover of the priority.Jcaching,The maximum number of elements in the queue.Kcaching,The current number of elements in the queue.LcachingThe next priority.McachingThe actual cacheNcachingThe cache we're drawing down.BcachinguPriority is set on entry and not changed. | LIFO -- ^ A generally bad policy where the most recent thing is evicted.Ccaching&Every lookup generates a new priority.DcachingGPriority is number of times looked up (tie breaker of order inserted?).ACBDEEACBDNone.HXq$HcachingWe can translate the tracking data. When the first cache evicts data, try to insert it into the second. Left bias, faster cache should come first. exclusive :: (Cache c1 m k t1 v, Cache c2 k t2 v) => c1 -> c2 -> (t1 -> t2) -> Cache m k t1 vInsert any data into both caches, retrieve it from either. Left bias, faster cache should come first. inclusive :: (Cache c1 m k t v, Cache c2 k t v) => c1 -> c2 -> Cache m k t vInserts to both, evicts if evicts from either. Example usage is to augment a cache with a dataset size limit intersection :: (Cache c1 m k t1 v, Cache c2 k t2 v) => c1 -> c2 -> Cache m k (t1, t2) vMaps the key to one of a given number of caches and inserts and retrieves from there. stripped :: (Cache c m k t v) => [c] -> Cache m k t vHHO      !"#$%&'()*+,-./012234567789:;<=>?@ABCDEFGHIJKLMNOPQRcaching-0-CFRaD8hIxO0HdAQNsZ0UGData.Cache.TraceData.Cache.TypeData.Cache.LRU Data.CacheMonadAtomicRefTracedatomicModifyRefTracedatomicModifyRefTraced'atomicModifyRefTracedM' MonadTracetraceTracable CacheTrace CacheEvent CacheEvictCacheAdd_ceKey _ceTracking_ceValueTracedT runTracedT UntracedT runUntracedTatomicModifyRefTracedM'_$fMonadIOTracable$fMonadIOTracable0$fMonadTransTracable$fMonadTransTracable0$fMonadFixTracable$fMonadFixTracable0$fMonadPlusTracable$fMonadPlusTracable0$fMonadFailTracable$fMonadFailTracable0$fMonadTracable$fMonadTracable0$fAlternativeTracable$fAlternativeTracable0$fApplicativeTracable$fApplicativeTracable0$fFunctorTracable$fFunctorTracable0$fMonadTraceFalse$fMonadTraceTrue$fMonadAtomicRefTracedFalsewm$fMonadAtomicRefTracedTruewm$fReadCacheEvent$fShowCacheEvent$fEqCacheEvent$fOrdCacheEvent DictCachedcInsdcLookdcEvictdcUpCacheCaching insetTraced lookupTraced evictTracedupdateTrackinginsertlookuplookupCreating lookupMaybecachedevict$fCachingDictCachemktvStrategyFIFOLRULFULRUCache $fEqLRUCache'$fShowLRUCache' filtering LRUCache2' lcCapacitylcSizelcGen lcPSQueuelcPSQueueOverflow