&m      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownSafe  is a paramorphism F-Algebra. is a catamorphism F-Algebra. is an anamorpism F-Algebra.P is a type for creating an in-memory representation of the fixed point of a m.6 is a typeclass for representing the fixed point of a m!. A well-behaved instance of 3 should not change the shape of the underlying m.5In other words, the following should always be true:   ( x) == x  N applies an AnaAlg over an argument to produce a fixed-point of a Functor.   applies a  over a fixed point of a m.   applies a  over a fixed point of a m.   maps from a fixed point of a m, to a different fixed point of the same m,. For any two well-behaved instances of , the shape of the m should remain unchanged. n    n(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownNone+034579>ILN A  G is a handle for accessing a file-backed recursive data structure. r is the  object stored in the  .A [ is an isolated execution of a read or update operation on the root object stored in a  . r is the  data that is stored by the  . s# is a phantom type used to isolate 2 values to the transaction where they are run.A  is a reference to a m f in the  instance of g.This is an instance of  and acts to bridge between the 8 and the recursively defined data structure that is (g f).A I datastructure acts as a kind of header that can contain one or more Vs to different recursive structures. It takes one argument, which has the kind of ((* -> *) -> *)4. This argument should be either an instance of  or a . If it is an instance of , then the 8 can contain recursive data structures. If it is passed  as an argument, then the C will contain a non-recursive structure, but can be serialized. Deserialize r  inside a . Serialize r  inside a S. This will result in | changes to any recursive structures to be written as well.  , but applied to an instance of .A  points to a location in a  # and has a phantom type for a m f. A & expects an argument that resembles a , but we can pass it a $ instead. This is not a well-formed ' because it can't be unpacked into f ( f).*But, it can be serialized, which allows a < object that takes this as an argument to be serialized. is a fixed-point combinator of f in Transaction s.oA memory-only instance of a.pAn instance of a that is file-backed.q_Write the stored data to disk so that the on-disk representation matches what is in memory.,Lens for accessing the value stored in a Ref Perform a  on a part of the root object.1The preferred way to modify the root object of a   is by using <. It applies a function that takes the root object as a  s f7 and returns the new desired head of the same type.!The preferred way to read from a   is to use ). It applies a function that takes a  s f and returns a value. Create a  , using  fD as the initial structure to store at the location described by r. Create a  , using  fD as the initial structure to store at the location described by r and using the s to the file to be created.Open a   from the file described by r.Open a   from the file described by r and using the s to the file. Close a  Q. This can potentially cause errors on data that is lazily being read from a .! Perform a read transaction on a  . This transaction cannot modify the root object stored in the file. The returned value is lazily evaluated, but will always correspond to the root object at the start of the transaction."!Perform a write transaction on a  . This operation differs from the readTransaction in that the root object stored in the file can potentially be updated by this .#5Get the full datastructure from the transaction as a  f.$ Because a  C is backed by an append-only file, there is a periodic need to $ the file to garbage collect data that is no longer referenced from the root. This task operates on a temporary file that then replaces the file that backs FixFile.kThe memory usage of this operation scales with the recursive depth of the structure stored in the file.@ tuvwopxyz{|}~q !"#$%  !"#$%    $!"#3 tuvwopxyz{|}~q !"#$(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownNone+-./0%A  (% k v)# stores a BTree of key/value pairs.& An empty % ' Create a   storing a (% k v). The initial value is &.(Open a   storing a (% k v).)Insert the value v with the key k into a  (% k v).* version of ).+%Lookup the values stored for the key k in a  (% k v)., version of +.-Filter items from a  (% k v) for a key k that match the predicate.. version of -./Delete all items for key k from the  (% k v).0 version of /.1Turn a  (% k v)! into a list of key value tuples.2'Turn a list of key value tuples into a  (% k v).%&'()*+,-./012%&'()*+,-./012%'(&)*+,-./012%&'()*+,-./012(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownNone+-./0 3A  (3 i)0 is a set of items represented as a binary tree.4 An empty 3.5Insert an item i into a  recursive 3 i.6 version of 5.7Delete an item i into a  recursive 3 i.8 version of 7.9#Predicate to lookup an item from a 3 i.: FTransaction version of 9.; Create a   (3 i).<Open a   (3 i).=Turn a  recurive structure of 3 i into a list.> version of =.3456789:;<=> 3456789:;<=> 3;<456789:=>3456789:;<=>(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownNone +-./0345>L ?A ? of keys k to values v! represented as a Two-Three Tree.@A @ of k! represented as a Two-Three Tree.AType synonym for the $ representation of a Two-Three Tree.B (B d), represents a Two-Three tree. The data type d should have data families for it's key and value. These data families are not exported from the module. As a result, the only valid types for d are (@ k) as defined here or (? k v), also defined here.C An empty  A.D9Predicate that returns true if there are no items in the A.ENumber of entries in (A g d).FInsert an item into a set.GLookup an item in a set.HDelete an item from a set.I#Convert a set into a list of items.J#Convert a list of items into a set.K Create a   for storing a set of items.LOpen a   for storing a set of items.M version of F.N FTransaction version of G.O FTransaction version of H.P Insert value v into a map for key k!. Any existing value is replaced.Q-Lookup an item in a map corresponding to key k.R!Delete an item from a map at key k.S'Apply a function to alter a Map at key k. The function takes ( v)> as an argument for any possible exiting value and returns Nothing to delete a value or Just v to set a new value.T.Convert a map into a list of key-value tuples.U-Convert a lst of key-value tuples into a map.V!Return the list of keys in a map.W!Return a list of values in a map.XMap a function over a map. Because of the way Tree23 is implemented, it is not possible to create a Functor instance to achieve this.Y Create a   of a Map.ZOpen a   of a Map.[ version of P.\ version of Q.] version of R.^ FTransaction version of S.@?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ ABCDE@KLFGHIJMNO?YZPQRSXTU[\]^VW2?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^(C) 2016 Rev. Johnny HealeyLGPL-3'Rev. Johnny Healey <rev.null@gmail.com> experimentalunknownNone +-./0>L_ (_ v) is a trie mapping lazy  ByteStrings to values of type v.` An empty _aa takes a _p that has been mutated and creates a copy of it that allows for faster lookups. This happens automatically for _s that are serialized to a  . A _< will be automatically thawed on any node that is modified.b Create a   of (_ v) data.cOpen a   of (_ v) data.d5Lookup a possible value stored in a trie for a given  ByteString key.e version of d.f)Insert a value into a trie for the given  ByteString key.g version of f.h'Delete a value from a trie for a given  ByteString key.i version of h.j#Iterate over a Trie for all of the  ByteString and value tuples for a given  ByteString prefix.k version of j.lMap a function over a  _D. Because of the data types used, this can't be implemented as a m.#_`abcdefghijkl_`abcdefghijkl_`abcdefghijkl_`abcdefghijkl      !"#$%&'()*+,-./0123456789,:;<=>?@ABCD9EF,GH:><BI@A;?=JKLMNOPQRSTUVWXY,Z[\]^_`abcdefghijklfmnfopqrrstuuvwxyz{|}~fgfixfi_HCcmscIrjHVEXU64tRk0y5 Data.FixFileData.FixFile.BTreeData.FixFile.SetData.FixFile.Tree23Data.FixFile.TrieData.FixFile.FixedParaAlgCataAlgAnaAlgFixInFoutFFixedinfoutfanacataparaisoFixFile TransactionRefdeRefRootreadRoot writeRootrootIsoPtrStoredrefsubTransactionalterTlookupT createFixFilecreateFixFileHandle openFixFileopenFixFileHandle closeFixFilereadTransactionwriteTransactiongetFullvacuumBTreeemptycreateBTreeFile openBTreeFile insertBTree insertBTreeT lookupBTree lookupBTreeT filterBTree filterBTreeT deleteBTree deleteBTreeT toListBTree fromListBTreeSet insertSet insertSetT deleteSet deleteSetT lookupSet lookupSetT createSetFile openSetFile toListSet toListSetTMapTree23TreeDnullsize fromListSet insertMap lookupMap deleteMapalterMap toListMap fromListMapkeysMap valuesMapmapMap createMapFile openMapFile insertMapT lookupMapT deleteMapT alterMapTTriefreezecreateTrieFile openTrieFile lookupTrie lookupTrieT insertTrie insertTrieT deleteTrie deleteTrieT iterateTrie iterateTrieTtrieMapbaseGHC.BaseFunctor $fFixedFixMemoryCachedsyncGHC.IOFilePathGHC.IO.Handle.TypesHandlerunRTFFHPosCachesCache HashTable createCache cacheInsert cacheLookupgetCachedOrStored withCache withCache_ getRawBlockgetBlock putRawBlockputBlock withHandlereadStoredLazyacquireWriteLockreleaseWriteLock withWriteLock readHeader updateHeader$fMonadStaterTransaction$fMonadTransaction$fApplicativeTransaction$fFunctorTransaction $fBinaryRef $fRootRef $fHashablePtr $fBinaryPtr $fFixedStoredDeleted AllDeleted UnChangedInsertInsertedSplitEmptyValueNodevaluenodenodeSize lookupPos splitRange $fBinaryBTree $fBinarySetMaybeChangeNoChangeChanged UnbalancedHole TreeValueTreeKeyTree23FLeafTwoThreeMVfromMVMKSVSKleaftwothree lookupTree23 alterTree23$fBinaryTreeValue$fBinaryTreeKeyTFCo:R:TreeValueMapTFCo:R:TreeKeyMap$fBinaryTreeValue0$fBinaryTreeKey0TFCo:R:TreeValueSetTFCo:R:TreeKeySet$fBinaryTree23FNoDeleteTailStringSmallBigMutabletailstringfillsmallbigmut bigThresholdfreeze'thawsplitKey $fBinaryTrie