úÎ!:g3Q}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Safe&',-.=>?@AHUVXÃtype-level-setsdMembership of an element in a set, with an acommanying value-level function that returns a bool type-level-sets3Open-family for the ordering operation in the sort type-level-sets=Value-level quick sort that respects the type-level ordering type-level-setsAType-level quick sort for normalising the representation of sets type-level-setsConstruct a subsetset s from a superset t type-level-sets*Value-level counterpart to the type-level € Note: the value-level case for equal types is not define here, but should be given per-application, e.g., custom merging behaviour may be required type-level-sets%Remove duplicates from a sorted list type-level-setsASplitting a union a set, given the sets we want to split it into type-level-setsDelete elements from a set type-level-sets-List append (essentially set disjoint union) type-level-setsUnion of sets }type-level-sets2Useful properties to be able to refer to someties type-level-sets&Predicate to check if in the set form type-level-sets;At the type level, normalise the list form to the set form !type-level-sets<At the value level, noramlise the list form to the set form $  !"#$"#  !  Safe&',-.=>?@AHUVX2J@type-level-setsConstruct a submap s from a supermap t Btype-level-setsCSplitting a union of maps, given the maps we want to split it into ~type-level-sets=Value-level quick sort that respects the type-level ordering Itype-level-sets;At the type level, normalise the list form to the map form Jtype-level-sets-Predicate to check if in normalised map form Ktype-level-setsUpdatability as a type class Ltype-level-setsUpdate a map with m at variable v with a value of type t to produce a map of type n Mtype-level-sets)Membership test a type class (predicate) Ntype-level-setsDValue-level lookup of elements from a map, via type class predicate Otype-level-setsZA value-level heterogenously-typed Map (with type-level representation in terms of lists) Rtype-level-sets4Pair a symbol (representing a variable) with a type Ttype-level-sets!Membership test as type function Utype-level-sets)Type-level lookup of elements from a map Vtype-level-sets"Delete elements from a map by key Wtype-level-setsHOpen type family for combining values in a map (that have the same key) type-level-setsApply W6 to values with matching key (removes duplicate keys) Xtype-level-setsUnion of two finite maps Ytype-level-setsA key-value pair [type-level-sets<At the value level, noramlise the list form to the map form \type-level-sets'Union of two finite maps (normalising) €type-level-sets,Append of two finite maps (non normalising) @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\YZXH\RSOPQWFGDEUTVBCMNKLJI[@AZ4      !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL !MMNOPQR$STUVWXYZ[\]^_`abcdefg9:hijklmnopq%r.type-level-sets-0.8.9.0-ElLufmKVg4DLUQSJ5YMnF8 Data.Type.Set Data.Type.Map NonMemberMemberPMembermemberCmpSortable quicksortDeleteFilterFlagFMinFMaxSortSubsetsubsetNubablenubNubSplitsplitRemoveremove:\:++ UnionableUnionIsSetAsSetSetEmptyExtProxyasSetunionappend$fEqSet $fShowSet $fShow'Set $fShow'Set0 $fShowSet0 $fRemovek:x $fRemovek:x0 $fRemovek[]t $fSplitkkks:: $fSplitkkk:t: $fSplitkkk:::$fSplitkkk[][][] $fNubablek: $fNubablek:0 $fNubablek:1 $fNubablek[] $fSubsetkk:: $fSubsetkks:$fSubsetkk[][] $fConderFalse $fConderTrue$fFilterVFMaxp:$fFilterVFMinp: $fFilterVfp[]$fSortableTYPE: $fSortablek[] $fMemberkka: $fMemberkka:0Submapsubmap CombinablecombineAsMapIsMap UpdatableupdateIsMemberlookpMapVarLookupCombineMapping:->asMap $fShowVar$fOrdMap $fOrdMap0$fEqMap$fEqMap0 $fShowMap $fIsMembervt:$fIsMembervt:0$fUpdatablevts:$fUpdatablevt::$fUpdatablevt::0 $fShow'Map $fShow'Map0 $fShowMap0 $fSortable[]$fFilterVfkv[] $fSortable: $fNubable: $fNubable:0 $fNubable:1 $fNubable[]$fFilterVFMaxkv:$fFilterVFMinkv: $fSplits:: $fSplit:t: $fSplit::: $fSplit[][][] $fSubmap:: $fSubmaps: $fSubmap[][] SetProperties