úÎ!xél[t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn o p q r s Safe -.>HUV$H haskus-utils-types"Check if all the elements are true(natValue' @(AllTrue 1 0 '[0,0,1] :: Nat)0(natValue' @(AllTrue 1 0 '[1,1,1] :: Nat)1!haskus-utils-types#Check if all the elements are false)natValue' @(AllFalse 1 0 '[0,0,1] :: Nat)0)natValue' @(AllFalse 1 0 '[0,0,0] :: Nat)1"haskus-utils-typesYGeneric boolean Xor on a list (i.e. check if there is a single true element in the list)(natValue' @(XorMany 1 0 '[0,0,1] :: Nat)1(natValue' @(XorMany 1 0 '[1,0,1] :: Nat)0(natValue' @(XorMany 1 0 '[0,0,0] :: Nat)0#haskus-utils-typesGeneric boolean Or on a list'natValue' @(OrMany 1 0 '[1,0,1] :: Nat)1'natValue' @(OrMany 1 0 '[1,1,1] :: Nat)1'natValue' @(OrMany 1 0 '[0,0,0] :: Nat)0$haskus-utils-typesGeneric boolean And on a list(natValue' @(AndMany 1 0 '[1,0,1] :: Nat)0(natValue' @(AndMany 1 0 '[1,1,1] :: Nat)1%haskus-utils-typesGeneric boolean XornatValue' @(Xor 1 0 1 0 :: Nat)1natValue' @(Xor 1 0 0 0 :: Nat)0natValue' @(Xor 1 0 1 1 :: Nat)0&haskus-utils-typesGeneric boolean OrnatValue' @(Or 1 0 1 0 :: Nat)1natValue' @(Or 1 0 0 0 :: Nat)0'haskus-utils-typesGeneric boolean AndnatValue' @(And 1 0 1 0 :: Nat)0natValue' @(And 1 0 1 1 :: Nat)1(haskus-utils-typesGeneric boolean NotnatValue' @(Not 1 0 1 :: Nat)0natValue' @(Not 1 0 0 :: Nat)1)haskus-utils-types Boolean XorboolValue @(XorB 'True 'False)TrueboolValue @(XorB 'False 'False)FalseboolValue @(XorB 'True 'True)False*haskus-utils-types Boolean OrboolValue @(OrB 'True 'False)TrueboolValue @(OrB 'False 'False)False+haskus-utils-types Boolean AndboolValue @(AndB 'True 'False)FalseboolValue @(AndB 'True 'True)True,haskus-utils-types Boolean NotboolValue @(NotB 'True)FalseboolValue @(NotB 'False)True-haskus-utils-types%Type-level Bool known at compile time.haskus-utils-types*Get a bool value from a Bool at type levelboolValue @'TrueTrueboolValue @(AndB 'True 'False)False/haskus-utils-types If-then-else !"#$%&'()*+,-.//,*+)-.('&%$#"! None,-.HUV&à2haskus-utils-typesTBuild a list of constraints e.g., ConstraintAll1 Eq '[A,B,C] ==> (Eq A, Eq B, Eq C)22Safe -.HUVXk/3haskus-utils-typesLike: If cond t (TypeError msg)‚The difference is that the TypeError doesn't appear in the RHS of the type which leads to better error messages (see GHC #14771).XFor instance: type family F n where F n = If (n <=? 8) Int8 (TypeError (Text ERROR))?type family G n where G n = Assert (n <=? 8) Int8 (Text ERROR)uIf GHC cannot solve `F n ~ Word`, it shows: ERROR If GHC cannot solve `G n ~ Word`, it shows: can't match   with t33Safe -.HUVXk9 4haskus-utils-typesReturn 0 if 0, and 1 otherwise5haskus-utils-typesReturn 1 if 0, and 0 otherwise6haskus-utils-types3Number of bits (>= 1) required to store a Nat valuenatValue' @(NatBitCount 0)1natValue' @(NatBitCount 1)1natValue' @(NatBitCount 2)2natValue' @(NatBitCount 5)3natValue' @(NatBitCount 15)4natValue' @(NatBitCount 16)57haskus-utils-typesMin of two naturals8haskus-utils-typesMax of two naturals9haskus-utils-typesType inequality to Nat:haskus-utils-typesType equality to Nat;haskus-utils-typesGet a Nat value<haskus-utils-typesGet a Nat value as a Word 456789:;<;< :98754  6None ,-.>HUVX`G5=haskus-utils-types3Check that a list only contain a value of each type>haskus-utils-types(Constraint: all the xs are members of ys?haskus-utils-typesConstraint: x member of xs@haskus-utils-typesProduct of two listsAhaskus-utils-typesComplement xs ysBhaskus-utils-typesUnion two listsChaskus-utils-types Set equalityDhaskus-utils-types Subset testEhaskus-utils-types/MapElem t f xs ys = Map (x -> Elem t f x ys) xsFhaskus-utils-typesList membership testuhaskus-utils-typesIndexed access into the listGhaskus-utils-typesIndexed access into the listvhaskus-utils-typesHelper for MaybeIndexOfHhaskus-utils-types<Get the first index (starting from 1) of a type or 0 if nonewhaskus-utils-typesGet the first index of a typeIhaskus-utils-typesGet all the indexes of a typexhaskus-utils-typesGet the first index of a typeJhaskus-utils-typesGet the first index of a typeKhaskus-utils-types)Keep only a single value of the head typeLhaskus-utils-types%Keep only a single value of each typeMhaskus-utils-typesRemove a in lNhaskus-utils-types Zip two listsOhaskus-utils-types&Map to 1 if type equality, 0 otherwisePhaskus-utils-typesGet list indexesyhaskus-utils-typesHelper for CheckMembersQhaskus-utils-types(Check that a list is a subset of anotherzhaskus-utils-typesHelper for CheckMemberRhaskus-utils-types*Check that a type is member of a type listShaskus-utils-typesGenerate a list of Nat [n..m-1]Thaskus-utils-typesRemove types at several indexesUhaskus-utils-types*Remove a type at index (0 == don't remove)Vhaskus-utils-typesRemove a type at indexWhaskus-utils-typesReverse a listXhaskus-utils-types replace types at offsets ns in lYhaskus-utils-typesreplace a type at offset n in lZhaskus-utils-typesreplace a type by another in l[haskus-utils-typesreplace l[n] with l2 (folded)\haskus-utils-typesInsert a list at n]haskus-utils-types Replicate^haskus-utils-typesGet list length_haskus-utils-typesConcat two type lists`haskus-utils-typesLast of a listahaskus-utils-typesHead of a listbhaskus-utils-typesSnocchaskus-utils-typesInit of a listdhaskus-utils-typesTake elements in a listehaskus-utils-typesDrop elements in a listfhaskus-utils-typesTail of a list{haskus-utils-typesHelper for Minghaskus-utils-typesGet the min of a list of Nats|haskus-utils-typesHelper for Maxhhaskus-utils-typesGet the max of a list of Natsihaskus-utils-typesMap a type function-=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi-b_]NVUTMLKa`fcde\[ZYXDCRQBA@?>=JIHGFEWSihg^PONone.FHXkb»jhaskus-utils-typesA natural value Proxy}~€jkjkSafe -.HUVXkc} mm Nonecóp }~€ !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkm None.HUVj›nhaskus-utils-typesaExtract types of the fields of a data type - only support data type with a single constructorohaskus-utils-typestExtract fields of a data type: - require selector symbols - only support data type with a single constructorshaskus-utils-types Named fieldi‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãänopqrssrpqonå             !"# $ % & ' ( ) * * + , - . . /0123456789:;<=>?@AB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyyz{ | } ~  € ‚ƒ„…†‡ˆ‰Š ‹Œ ‹ ‹ ‹Ž ‹Ž  ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § § ¨ ¨ © ª ª « ¬ ¬ ­ ® ® ¯ ° ± ² ³ ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë À Á  à Ä Å Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æç-haskus-utils-types-1.5-Ey3ChkeJKhMJ20wX0gLjL3Haskus.Utils.Types.NatHaskus.Utils.Types.SymbolHaskus.Utils.TypesHaskus.Utils.Types.ConstraintHaskus.Utils.Types.ErrorHaskus.Utils.Types.ProxyHaskus.Utils.Types.BoolHaskus.Utils.Types.ListHaskus.Utils.Types.GenericsAssert..base GHC.TypeNatsKnownNat GHC.TypeLits KnownSymbolghc-prim GHC.TypesType ConstraintNatSymbol+*^<=?- CmpSymbolCmpNatDivModLog2 TypeErrorGHC.PrimProxy#Text:<>::$$:ShowType sameSymbol someSymbolVal SomeSymbol ErrorMessagesameNat someNatValSomeNat<=AllTrueAllFalseXorManyOrManyAndManyXorOrAndNotXorBOrBAndBNotB KnownBool boolValueIf$fKnownBoolBoolFalse$fKnownBoolBoolTrueConstraintAll1 IsNotZeroIsZero NatBitCountMinMaxNatNotEqNatEqnatValue natValue'CheckNubMembersMemberProduct ComplementUnionSetEqSubsetMapElemElemIndex MaybeIndexOf IndexesOfIndexOfNubHeadNubRemoveZipMapTestIndexes CheckMembers CheckMemberGenerate RemoveAtN RemoveAt1RemoveAtReverse ReplaceNSReplaceNReplace ReplaceAtInsertAt ReplicateLengthConcatLastHeadSnocInitTakeDropTailListMinListMaxMapNatVal $fShowNatVal symbolValueExtractFieldTypes ExtractFields LookupFieldLookupFieldType FieldTypeFieldWordIndex' MaybeIndexOf' IndexesOf'IndexOf' CheckMembers' CheckMember'Min'Max' Data.Proxy asProxyTypeOfProxyKProxy GHC.GenericsGenericRepfromtoGeneric1Rep1from1to1Datatype datatypeName moduleName packageName isNewtype ConstructorconName conFixity conIsRecordSelectorselNameselSourceUnpackednessselSourceStrictnessselDecidedStrictnessV1U1Par1unPar1Rec1unRec1K1unK1M1unM1:+:L1R1:*::.:Comp1unComp1RDCSRec0D1C1S1URecUAddrUCharUDoubleUFloatUIntUWorduWord#uInt#uFloat#uDouble#uChar#uAddr#precFixityPrefixInfixFixityIPrefixIInfixI AssociativityLeftAssociativeRightAssociativeNotAssociativeSourceUnpackedness SourceUnpackSourceNoUnpackNoSourceUnpackednessSourceStrictness SourceLazy SourceStrictNoSourceStrictnessDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackMetaMetaDataMetaConsMetaSel