úÎ1 -•      !"#$%&'()#$&'()#$&'() experimental!Roman Smr <roman.smrz@seznam.cz> experimental!Roman Smr <roman.smrz@seznam.cz>  does not cache any values <Provides standard clock cache with second chance mechanism.  JFirst parameter of this class is actual cache type, the second is type of M cached values. The cache should just hold an reference to those values that ! are meant to be kept in memory. CThis function is called when new value is about to be added to the / structure using the cache. It returns another * action used for  " refreshing"8; i.e. which should be called whenever associated value & is accessed, so the cache can adapt.  Version of  , which works with a cache in +.         experimental!Roman Smr <roman.smrz@seznam.cz>#,-./0123456789:;<=>?@ABCDEFCreates : from given functor object. The first parameter is prefix M from which the name of database files are derived (by appending their index F number and database extension), those files should not be altered by J external files when the program is running or between saving and loading  snapshots. The  initially uses the , which does not keep any data ; in memory, apart from those referenced from other places. Prefix of database files  Initial data Sets cache for given . object; it determines, which items are to be K swapped onto disk, when available slots are used up (and also how many of M such slots actually exists in the first place); can be shared among several  87 objects. Analogous to the , but works with  encosed in an +. 5Lifting function used for adding new elements to the  object. Needs ! to be applied to functions like : or Data.Map.insert for them to act on I Swapper instead of the original structure. Requires the function in its ? first argument to work for functor containing arbitrary type.  a :: Swapper [] Int  let a' = adding (:) 6 a   b :: Swapper (Map String) Int % let b' = adding (insert "new") 42 b GFunction used to lift functions getting elements from inner structure,  like GH or Data.Map.lookup%, to functions getting elements from  : object. Functions in the first argument needs to work on f containing  elements of arbitrary type.  a :: Swapper [] Int  let x = getting head a   b :: Swapper (Map String) Int # let y = getting (lookup "some") b IThis function is needed to make functions changing the structure somehow  (like IJ or Data.Map.delete), to change the  instead. Like J the previous lifting functions, its first argument needs to work for any  values of any type.  a :: Swapper [] Int  let a' = changing tail a   b :: Swapper (Map String) Int % let b' = changing (delete "some") b KLMNO         !"#$%&'()*+,-./01233456789:;<<=>?@ABCDEFGHIJ0KLMNL0KOMNOPPQRS swapper-0.1Data.Disk.Swapper.SnapshotData.Disk.Swapper.CacheData.Disk.Swapper!Data.Disk.Swapper.HappstackCompatData.Disk.Swapper.TokyoCabinetSnapshotgetFromSnapshot putToSnapshot NullCache ClockCacheccSizeccData SomeCacheCacheaddValue addValueRef mkClockCache nullCacheSwapper mkSwappersetCache setCacheRefaddinggettingchangingswapperDBPrefixcreateSwapperCheckpointDatabaseTCADB tcadbcopytcadbouttcadbgettcadbput tcadbclose tcadbopentcadbdeltcadbnewopencloseuseLBSAsCStringputgetoutcopyghc-prim GHC.TypesIObase GHC.IORefIORefSwapDBsdDBsdPrefix sdCountersdSemspDB spCounterspCache spContent SwappablesaKeysaValue saFinalizedKeydbOpenwithDBdbPutdbGetdbOutreturn' swPutNewWeakswLoader putSwappable getSwappableGHC.Listheadbytestring-0.9.2.0Data.ByteString.LazytailXcheckGetcheckPut