h$#"6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHINone 3>?&ixset is a J from some K key to a L of values for that key. ! carries type information inside.ixset(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.ixsetHelper function to  a list of elements into a set.ixset'Convenience function for deleting from Js of Ls. If the resulting L. is empty, then the entry is removed from the J.ixsetHelper function to  a list of elements from a set.ixsetTakes the union of two sets.ixset#Takes the intersection of two sets.None'(3>?!4 ixset'Defines objects that can be members of  . ixsetDefines 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 . ixsetSet with associated indexes.ixset 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   must be reachable by the first index in this list, or you'll get a runtime error.ixsetCreate 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.ixsetCreate 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. instance Indexable Type where empty = ixSet [ ixGen (Proxy :: Proxy Type) ]%In production systems consider using  in place of # as the former one is much faster.ixsetFunction to be used for calcs in , when you don't want any calculated values.ixset?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.WARNING: 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])ixsetGenerically traverses the argument to find all occurences of values of type b and returns them as a list.This function properly handles N as N not as [O].ixsetGenerically 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 N as N not as [O].ixset$Higher order operator for modifying     a ->   a, e.g.  or .ixsetInserts an item into the  . If your data happens to have a primary key this function might not be what you want. See .ixsetRemoves an item from the  .ixsetWill 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.ixsetWill 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.ixset Converts an   to a L of its elements.ixset Converts a L to an  .ixsetConverts a list to an  .ixset*Returns the number of unique items in the  . ixset Converts an   to its list of elements.!ixset Converts an   to its list of elements.4List will be sorted in ascending order by the index k.The list may contain duplicate entries if a single value produces multiple keys."ixset Converts an   to its list of elements.5List will be sorted in descending order by the index k.The list may contain duplicate entries if a single value produces multiple keys.#ixsetIf the  > is a singleton it will return the one item stored in it. If  5 is empty or has many elements this function returns P.$ixsetLike # with a user-provided default.%ixsetReturn Q if the   is empty, R otherwise.&ixset An infix ) operation.'ixset An infix ( operation.(ixsetTakes the union of the two  s.)ixset"Takes the intersection of the two  s.*ixsetInfix version of 5.+ixsetInfix version of 6.,ixsetInfix version of 7.-ixsetInfix version of 8..ixsetInfix version of 9./ixset;Returns the subset with indexes in the open interval (k,k).0ixset)Returns the subset with indexes in [k,k).1ixset)Returns the subset with indexes in (k,k].2ixset)Returns the subset with indexes in [k,k].3ixset:Creates the subset that has an index in the provided list.4ixset9Creates the subset that matches all the provided indexes.5ixsetReturns the subset with an index equal to the provided key. The set must be indexed over key type, doing otherwise results in runtime error.6ixsetReturns the subset with an index less than the provided key. The set must be indexed over key type, doing otherwise results in runtime error.7ixsetReturns the subset with an index greater than the provided key. The set must be indexed over key type, doing otherwise results in runtime error.8ixsetReturns 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.9ixsetReturns 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.:ixsetReturns 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.;ixsetReturns lists of elements paired with the indexes determined by type inference.<ixsetReturns 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.=ixsetReturns 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 order. But this may change if someone bothers to add S,. So do not rely on the sort order of '[t]'.>ixset(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.?ixset(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.@ixsetStatistics 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:;<=@&5'5      !"#$%& '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLGMNJOPJQRSTUJVWSTXSTYGM!$ixset-1.1.1.2-3WWQ7ZXiU5N773h9uXXjyF 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.6.2.1Data.Map.InternalMapbaseData.Typeable.InternalTypeableData.Set.InternalSet Data.DataDataGHC.BaseStringghc-prim GHC.TypesChar GHC.MaybeNothingTrueFalse