úÎ~z|=      !"#$%&'()*+,-./0123456789:;<None is a = from some > key to a ? of values for  that key. " carries type information inside. (Convenience function for inserting into =s of ?s as in  the case of an ,. If they key did not already exist in the  = , then a new ? is added transparently. Helper function to  a list of elements into a set. 'Convenience function for deleting from =s of ? s. If the  resulting ?. is empty, then the entry is removed from the =. Helper function to  a list of elements from a set. Takes the union of two sets. $Takes the intersection of two sets. @ABCDE @ABCDENone6 'Defines objects that can be members of  . Defines what an empty  & for this particular type should look 6 like. It should have all necessary indexes. Use the  0 function to create the set and fill it in with  and . Set with associated indexes.  Create an  ( using a list of indexes. Useful in the      method. Use  and  as list elements.   instance Indexable Type where  empty = ixSet [ ... % ixFun getIndex1 7 ixGen (Proxy :: Proxy Index2Type)  ] Every value in the  . must be reachable by the first index in this  list, or you'll get a runtime error. BCreate a functional index. Provided function should return a list - of indexes where the value should be found.  $ getIndexes value = [...indexes...]   instance Indexable Type where ( empty = ixSet [ ixFun getIndexes ] /This is the recommended way to create indexes. ECreate a generic index. Provided example is used only as type source  so you may use a  -. This uses flatten to traverse values using  their F instances.   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. Function 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. WARNING=: The type specified as the first index must be a type which appears in all values in the   or ,  and Hserialization will not function properly. You will be warned not to do @this with a runtime error. You can always use the element type itself. For example: ? $(inferIxSet "FooDB" ''Foo 'noCalcs [''Foo, ''Int, ''String]) G Version of H that takes in a Q [Dec] instead of a [Q Dec] ; and filters out signatures from the list of declarations. I4Returns true if the Dec matches a SigD constructor. =Generically traverses the argument to find all occurences of  values of type b and returns them as a list. This function properly handles J as J not as [K]. 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 J as J not as [K]. $Higher order operator for modifying  s. Use this when your % final function should have the form a ->   a ->   a,  e.g.  or . Inserts an item into the  . If your data happens to have = a 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 ? of its elements.  Converts a ? to an  . Converts a list to an  . *Returns the number of unique items in the  .  Converts an   to its list of elements.  Converts an   to its list of elements. 4List will be sorted in ascending order by the index k. QThe list may contain duplicate entries if a single value produces multiple keys.  Converts an   to its list of elements. 5List will be sorted in descending order by the index k. QThe list may contain duplicate entries if a single value produces multiple keys. !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 L. "Like ! with a user-provided default. #Return M if the   is empty, N otherwise. $ An infix ' operation. % An infix & operation. &Takes the union of the two  s. '"Takes the intersection of the two  s. (Infix version of 3. )Infix version of 4. *Infix version of 5. +Infix version of 6. ,Infix version of 7. -<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]. 0'Returns the subset with indexes in [k,k]. 1;Creates the subset that has an index in the provided list. 2:Creates the subset that matches all the provided indexes. 3AReturns the subset with an index equal to the provided key. The ? set must be indexed over key type, doing otherwise results in  runtime error. 4BReturns the subset with an index less than the provided key. The ? set must be indexed over key type, doing otherwise results in  runtime error. 5@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. 6;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. 7>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. 8?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. 9@Returns lists of elements paired with the indexes determined by  type inference. :@Returns lists of elements paired with the indexes determined by  type inference. 8The resulting list will be sorted in ascending order by k.  The values in '[t]', will be sorted in ascending order as well. ;@Returns lists of elements paired with the indexes determined by  type inference. 9The resulting list will be sorted in descending order by k. NOTE: The values in '[t]'# are currently sorted in ascending 6 order. But this may change if someone bothers to add  O&. So do not rely on the sort order of '[t]'. P(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. Q(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. <Statistics 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. I R STUVWGIXYZ !"#$%&'()*+,-./0123456789:;PQ<[\]^_`a5  !"#$%&'()*+,-./0123456789:;<5  !"#$%&'()*+,-./0123456789:;<F  R  STUVWGIXYZ !"#$%&'()*+,-./0123456789:;PQ<[\]^_`ab      !"#$ %&'()*+,-./0123456789:;<=>?:@ABCDEFG=HIJKLMN=OPQRS=TUQRVQRW:@XY Z[\]^_`abcdefgh ixset-1.0.5 Data.IxSet.Ix Data.IxSetIxinsert insertListdelete deleteListunion intersectionIndexOp IndexableemptyIxSetProxyixSetixFunixGennoCalcs inferIxSetflattenflattenWithCalcschangeupdateIxdeleteIxtoSetfromSetfromListsizetoList toAscList toDescListgetOnegetOneOrnull&&&|||@=@<@>@<=@>=@><@>=<@><=@>=<=@+@*getEQgetLTgetGTgetLTEgetGTEgetRangegroupBy groupAscBy groupDescBystatscontainers-0.5.0.0 Data.Map.BaseMapbaseData.Typeable.InternalTypeable Data.Set.BaseSet con_Ix_Data ixType_DataixConstr ixDataType $fDatactxIx$fDataIx Data.DataData instanceD'template-haskellLanguage.Haskell.TH.Lib instanceDisSigDGHC.BaseStringghc-prim GHC.TypesChar Data.MaybeNothingTrueFalsegetOrdgetOrd2mkProxy asProxyType showTypeOf ixSetConstr ixSetDataTypetyVarBndrToNameinsertMapOfSets $fMonoidIxSet $fReadIxSet $fShowIxSet$fDatactxIxSet$fSafeCopyIxSet $fOrdIxSet $fEqIxSet