}!xIJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHINone 1;=>?CQV - is a J from some K key to a L of values for that key. ! carries type information inside.(Convenience function for inserting into Js of Ls as in the case of an -. If they key did not already exist in the J , then a new L is added transparently.Helper function to  a list of elements into a set.'Convenience function for deleting from Js of Ls. If the resulting L. is empty, then the entry is removed from the J.Helper function to  a list of elements from a set.Takes the union of two sets.#Takes the intersection of two sets.None&'1;=>?AQVvJ6 'Defines objects that can be members of  . Defines what an empty  \ for this particular type should look like. It should have all necessary indexes. Use the 1 function to create the set and fill it in with  and . Set with associated indexes. Create an  8 using a list of indexes. Typically used to create the   method for an   instance.5The list elements are generally created by using the  and  helper functions. instance Indexable Type where empty = ixSet [ ... , ixFun getIndex1 , ixGen (Proxy :: Proxy Index2Type) ]Every value in the  S must be reachable by the first index in this list, or you'll get a runtime error.nCreate a functional index. Provided function should return a list of indexes where the value should be found. "getIndexes value = [...indexes...] Dinstance Indexable Type where empty = ixSet [ ixFun getIndexes ].This is the recommended way to create indexes.WCreate a generic index. Provided example is used only as type source so you may use a 4. This uses flatten to traverse values using their M instances. Oinstance Indexable Type where 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 Stringand 5$(inferIxSet "FooDB" ''Foo 'noCalcs [''Int,''String])will build a type synonym type FooDB = IxSet Foowith Int and String as indexes.WARNINGZ: The type specified as the first index must be a type which appears in all values in the   or  ,  and serialization 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])N Version of Oh that takes in a Q [Dec] instead of a [Q Dec] and filters out signatures from the list of declarations.P3Returns true if the Dec matches a SigD constructor.MGenerically traverses the argument to find all occurences of values of type b and returns them as a list.This function properly handles Q as Q not as [R].cGenerically 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 Q as Q not as [R].$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  .eWill replace the item with index k. Only works if there is at most one item with that index in the  . Will not change  / if you have more then 1 item with given index.dWill delete the item with index k. Only works if there is at most one item with that index in the  . Will not change  / if you have more then 1 item with given index. Converts an   to a L of its elements. Converts a L 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.PThe 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.PThe 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 S.$Like # with a user-provided default.%Return T if the   is empty, U otherwise.& An infix ) operation.' An infix ( operation.(Takes the union of the two  s.)"Takes the intersection of the two  s.*Infix version of 5.+Infix version of 6.,Infix version of 7.-Infix version of 8..Infix version of 9./;Returns the subset with indexes in the open interval (k,k).0)Returns the subset with indexes in [k,k).1)Returns the subset with indexes in (k,k].2)Returns the subset with indexes in [k,k].3:Creates the subset that has an index in the provided list.49Creates the subset that matches all the provided indexes.5Returns the subset with an index equal to the provided key. The set must be indexed over key type, doing otherwise results in runtime error.6Returns the subset with an index less than the provided key. The set must be indexed over key type, doing otherwise results in runtime error.7Returns the subset with an index greater than the provided key. The set must be indexed over key type, doing otherwise results in runtime error.8Returns 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.9Returns 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.: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.;PReturns lists of elements paired with the indexes determined by type inference.<PReturns lists of elements paired with the indexes determined by type inference.8The resulting list will be sorted in ascending order by kA. The values in '[t]' will be sorted in ascending order as well.=PReturns lists of elements paired with the indexes determined by type inference.9The resulting list will be sorted in descending order by k.sNOTE: The values in '[t]' are currently sorted in ascending order. But this may change if someone bothers to add V,. So do not rely on the sort order of '[t]'.>(A function for building up selectors on  {s. Used in the various get* functions. The set must be indexed over key type, doing otherwise results in runtime error.?(A function for building up selectors on  {s. Used in the various get* functions. The set must be indexed over key type, doing otherwise results in runtime error.@Statistics about  . This function returns quadruple 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 values in all keys in all indexes. This can aid you in debugging and optimisation.7  !"#$%&'()*+,-./0123456789:;<=>?@7   !"#$%&'()*+,-./01234>?56789:;<=@  W&5'5X      !"#$%& '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLGMNJOPQRSTUJVWXYZJV[XY\XY]GM!^ ixset-1.1-39vvh1EWAV2BII5KFuhGVu Data.IxSet.Ix Data.IxSetIxinsert insertListdelete deleteListunion intersection $fDatactxIx$fDataIxIndexOp IndexableemptyIxSetProxyixSetixFunixGennoCalcs inferIxSetflattenflattenWithCalcschangeupdateIxdeleteIxtoSetfromSetfromListsizetoList toAscList toDescListgetOnegetOneOrnull&&&|||@=@<@>@<=@>=@><@>=<@><=@>=<=@+@*getEQgetLTgetGTgetLTEgetGTEgetRangegroupBy groupAscBy groupDescBygetOrdgetOrd2stats $fShowIxSet $fOrdIxSet $fEqIxSet $fMonoidIxSet$fSemigroupIxSet $fReadIxSet$fDatactxIxSet$fSafeCopyIxSet $fDataIxSetcontainers-0.5.10.2Data.Map.InternalMapbaseData.Typeable.InternalTypeableData.Set.InternalSet Data.DataData instanceD'template-haskellLanguage.Haskell.TH.Lib instanceDisSigDGHC.BaseStringghc-prim GHC.TypesCharNothingTrueFalse