úÎk·g¬7      !"#$%&'()*+,-./0123456  is a 7 from some 8 key to a 9 of values for  that key. " carries type information inside. :;<=(Convenience function for inserting into 7s of 9s as in  the case of an ,. If they key did not already exist in the  7 , then a new 9 is added transparently. Helper function to  a list of elements into a set. 'Convenience function for deleting from 7s of 9 s. If the  resulting 9. is empty, then the entry is removed from the 7. Helper function to  a list of elements from a set. Take union of two sets. Take intersection of two sets 8  . class defines objects that can be members of  . Method   defines what an empty   for this A particular type should look like. It should have all necessary  indexes. Use  + function to create the set and fill it in  with   and . Set with associatex indexes. >  Create an  $ using a list of indexes. Useful in      method. Use   and  as list elements.   instance Indexable Type where  empty = ixSet [ ... % ixFun getIndex1 7 ixGen (Proxy :: Proxy Index2Type)  ] ?First index in the list must contain all objects in set, doing $ otherwise result in runtime error. BCreate a functional index. Provided function should return a list * of indexes where value should be found.  $ getIndexes value = [...indexes...]   instance Indexable Type where ( empty = ixSet [ ixFun getIndexes ] /This is the recommended way to create indexes. >Create a generic index. Provided example is used only as type  source so you may use a ?@. The  uses flatten to  traverse value using its A instance.   instance Indexable Type where 3 empty = ixSet [ ixGen (Proxy :: Proxy Type) ] %In production systems consider using   in place of  as  the former one is much faster. BCDFunction to be used for calcs in  when you don't  want any calculated values. ?Template Haskell helper function for automatically building an  ! instance from a data type, e.g.   data Foo = Foo Int String and  7 $(inferIxSet "FooDB" ''Foo 'noCalcs [''Int,''String]) will build a type synonym   type FooDB = IxSet Foo with Int and String as indexes. DWARNING: The type specified as the first index must be a type which appears in all values in the   or ,  and Gserialization will not function properly. You will be warned not to do <this by runtime error. You can always use the element type itself. For example: ? $(inferIxSet "FooDB" ''Foo 'noCalcs [''Foo, ''Int, ''String]) E=Generically traverses the argument to find all occurences of  values of type b and returns them as a list. This function properly handles F as F not as [G]. AGenerically traverses the argument and calculated values to find " all occurences of values of type b and returns them as a  list. Equivalent to:   flatten (x,calcs x) This function properly handles F as F not as [G]. $Higher order operator for modifying  s. Use this when your % final function should have the form a ->   a ->   a,  e.g.  or . HIInserts an item into the  . If your data happens to have ; primary key this function might not be what you want. See  . Removes an item from the  . ?Will replace the item with index k. Only works if there is at & most one item with that index in the  . Will not change   0 if you have more then 1 item with given index. >Will delete the item with index k. Only works if there is at & most one item with that index in the  . Will not change   0 if you have more then 1 item with given index.  Converts an   to a 9 of its elements.  Converts a 9 to an  . Converts a list to an  . *Returns the number of unique items in the  .  Converts an   to its list of elements. If the  : is a singleton it will return the one item stored in it.  If  5 is empty or has many elements this function returns J. Like  with a user provided default. Return K if the   is empty, L otherwise.  An infix # operation. ! An infix " operation. "Takes the union of the two  s. #"Takes the intersection of the two  s. $Infix version of /. %Infix version of 0. &Infix version of 1. 'Infix version of 2. (Infix version of 3. )<Returns the subset with indexes in the open interval (k,k). **Returns the subset with indexes in [k,k). +'Returns the subset with indexes in (k,k]. ,'Returns the subset with indexes in [k,k]. -;Creates the subset that has an index in the provided list. .:Creates the subset that matches all the provided indexes. /AReturns the subset with an index equal to the provided key. The ? set must be indexed over key type, doing otherwise results in  runtime error. 0BReturns the subset with an index less than the provided key. The ? set must be indexed over key type, doing otherwise results in  runtime error. 1@Returns the subset with an index greater than the provided key. C The set must be indexed over key type, doing otherwise results in  runtime error. 2;Returns the subset with an index less than or equal to the = provided key. The set must be indexed over key type, doing % otherwise results in runtime error. 3>Returns the subset with an index greater than or equal to the = provided key. The set must be indexed over key type, doing % otherwise results in runtime error. 4?Returns the subset with an index within the interval provided. ; The bottom of the interval is closed and the top is open, > i. e. [k1;k2). The set must be indexed over key type, doing % otherwise results in runtime error. 5@Returns lists of elements paired with the indexes determined by  type inference. M(A function for building up selectors on  s. Used in the A various get* functions. The set must be indexed over key type, + doing otherwise results in runtime error. N(A function for building up selectors on  s. Used in the A various get* functions. The set must be indexed over key type, + doing otherwise results in runtime error. 6Statistics about  ". This function returns quadruple C consisting of 1. total number of elements in the set 2. number of @ declared indexes 3. number of keys in all indexes 4. number of B values in all keys in all indexes. This can aid you in debugging  and optimisation. /  !"#$%&'()*+,-./0123456/   !"#$%&'()*+,-./0123456/   !"#$%&'()*+,-./0123456O      ! "#$%&'()*+,-./0123456789:5;<=>?@ ABCABC8DEFGHI8JKLMNO8PQLRSLRTUVWhappstack-ixset-6.0.0Happstack.Data.IxSet.IxHappstack.Data.IxSetIxinsert insertListdelete deleteListunion intersectionIndexOp IndexableemptyIxSetixSetixFunixGennoCalcs inferIxSetflattenflattenWithCalcschangeupdateIxdeleteIxtoSetfromSetfromListsizetoListgetOnegetOneOrnull&&&|||@=@<@>@<=@>=@><@>=<@><=@>=<=@+@*getEQgetLTgetGTgetLTEgetGTEgetRangegroupBystatscontainers-0.4.0.0Data.MapMapbase Data.TypeableTypeableData.SetSet con_Ix_Data ixType_DataixConstr ixDataTypehappstack-data-6.0.0Happstack.Data.ProxyProxy Data.DataData showTypeOf ixSetConstr ixSetDataTypetyVarBndrToNameGHC.BaseStringghc-prim GHC.TypesCharinsertMapOfSets Data.MaybeNothingGHC.BoolTrueFalsegetOrdgetOrd2