úÎBq>LE      !"#$%&'()*+,-./0123456789:;<=>?@ABCD  Safe-Inferred!"&'(+23468=HJKM 7Checks if the former subset included in the latter one.Wrap first element with  Tagged tag Replace first arbitrary element typ1 in type list with typ2Delete element from type listReverse list of elementsQUnion list of lists of elements. Return just unique elements of each nested list Calculates union two lists HAppend element to type list if element is not presented in list already Type level list lengthXCalculates to Nat kinded type describing the index of first argument in second argumentLCalculates to 'True if first type argument contained in second list element     Safe-Inferred!"&'(+23468=HJKMPHeterogeneous set (list of elements) with unique types. Useful with MonadReader.       Safe-Inferred!"&'(+23468=HJKM"EThis is auxiliary typeclass for inversing the order of hset elements!"#$EFG!"#$"#!$!"#$EFG Safe-Inferred!"&'(+23468=HJKM%*Delete element from HSet of specified type@let x = (HSCons "sdf" $ HSCons 123 HSNil) :: HSet '[String, Int]hdelete (Proxy :: Proxy Int) xHSCons ("sdf") (HSNil)!hdelete (Proxy :: Proxy String) xHSCons (123) (HSNil)PConstraints that e can be removed from els1 and els2 will be produced in result&GRemove i's element from hset. Second argument is a resulting hset type(<Delete specific element from els1 and returns HSet with els2%&'(HI%&'(&'%(%&'(HI Safe-Inferred!"&'(+23468=HJKM )*+,-./0123)*+ *+3210/.-,) )*+,-./0123 Safe-Inferred!"&'(+23468=HJKM4Helper type infering that hset els contains element of type e and can be modified5*Check that we can turn one hset to another8Like 7" but do not change the hset's type 456789:;<JK 456789:;< 675489:;< 456789:;<JK Safe-Inferred!"&'(+23468=HJKM="Enables deriving of the fact that e is contained within els and it's safe to say that ?* can be performed on this particular pair.>0Heterogeneous read arbitrarily element from hset8let x = HSCons (10 :: Int) $ HSCons (20 :: Double) HSNilx#HSCons (10) (HSCons (20.0) (HSNil)) hget x :: Int10hget x :: Double20.0 Note that ?‰ takes specific element from list of uniquely typed elements depending on what type is required to be returned (return type polymorphism)?Gets any data from HSet for you@Ylet y = HSCons (Tagged 10 :: Tagged "x" Int) $ HSCons (Tagged 20 :: Tagged "y" Int) HSNily/HSCons (Tagged 10) (HSCons (Tagged 20) (HSNil))(hgetTagged (Proxy :: Proxy "x") y :: Int10(hgetTagged (Proxy :: Proxy "y") y :: Int20=>?@LM=>?@>?=@=>?@LM Safe-Inferred!"&'(+23468=HJKMBOTakes subset of some hset, including subset of same elements in different order[let x = (HSCons "hello" $ HSCons 1234 $ HSCons 12.123 HSNil) :: HSet '[String, Int, Double] subHSet x :: HSet '[Double, Int]'HSCons (12.123) (HSCons (1234) (HSNil))#subHSet x :: HSet '[String, Double]*HSCons ("hello") (HSCons (12.123) (HSNil)) subHSet x :: HSet '[Int, String](HSCons (1234) (HSCons ("hello") (HSNil))DLike C but with proxy for convenienceXlet x = (HSCons "hello" $ HSCons 123 $ HSCons 345 HSNil) :: HSet '[String, Int, Integer]hnarrow (Proxy :: Proxy '[]) xHSNil$hnarrow (Proxy :: Proxy '[String]) xHSCons ("hello") (HSNil)*hnarrow (Proxy :: Proxy '[Int, Integer]) x#HSCons (123) (HSCons (345) (HSNil))*hnarrow (Proxy :: Proxy '[Integer, Int]) x#HSCons (345) (HSCons (123) (HSNil))ABCDNOPABCDBCADABCDNOP  Safe-Inferred!"&'(+23468=HJKM%&'()*+456789:;<=>?@ABCDQ     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ hset-2.1.0Data.HSet.TypeLevelData.HSet.TypeData.HSet.ReverseData.HSet.RemoveData.HSet.UnionData.HSet.Modify Data.HSet.GetData.HSet.SubHSet Data.HSetHSubsetAndTagElemReplaceDeleteReverseXReverse UnionList UnionList'Union AppendUniqAppendLengthTEqMayFstIndexSndMayIndex MayIndexGoIndexElemNatSZHSetHSConsHSNil $fNFDataHSet $fNFDataHSet0 $fOrdHSet $fOrdHSet0$fEqHSet $fEqHSet0 $fShowHSet $fShowHSet0 HReversibleHReverse hreverse'hreverse HDeletableHRemovehremovehdelete HUnionableHUnionhunion$fHUnion:::NothingJust$fHUnion:els2:JustNothing$fHUnion:::JustJust$fHUnion:::JustJust0$fHUnion:::NothingNothing$fHUnion:[]:NothingNothing$fHUnion[]::NothingNothing$fHUnion[][][]NothingNothingHMonoModifiable HModifiableHModifyhmodify hMonoModify hModifyTaggedhMonoModifyTaggedhUntaghTag HGettableHGethget hgetTagged SubHSettableSubHSetsubHSethnarrow$fHReverse[]:els2$fHReverse::els2$fHReverseacc[]acc$fHRemoveNat::S$fHRemoveNat:elsZ$fHModify::e1e2S$fHModify::e1e2Z $fHGet:eS $fHGet:eZ$fSubHSetels:True$fSubHSetels:False$fSubHSetels[]eq