úÎ!wEjár      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq Safe -.>HUV$.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&Æ1haskus-utils-typesTBuild a list of constraints e.g., ConstraintAll1 Eq '[A,B,C] ==> (Eq A, Eq B, Eq C)11Safe -.HUVXk.æ2haskus-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 r22Safe -.HUVXk8î 3haskus-utils-typesReturn 0 if 0, and 1 otherwise4haskus-utils-typesReturn 1 if 0, and 0 otherwise5haskus-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)56haskus-utils-typesMin of two naturals7haskus-utils-typesMax of two naturals8haskus-utils-typesType inequality to Nat9haskus-utils-typesType equality to Nat:haskus-utils-typesGet a Nat value;haskus-utils-typesGet a Nat value as a Word 3456789:;:; 987643   5None ,-.>HUVX^á3<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 lists@haskus-utils-typesComplement xs ysAhaskus-utils-typesUnion two listsBhaskus-utils-types Set equalityChaskus-utils-types Subset testDhaskus-utils-types/MapElem t f xs ys = Map (x -> Elem t f x ys) xsEhaskus-utils-typesList membership testFhaskus-utils-typesIndexed access into the listshaskus-utils-typesHelper for MaybeIndexOfGhaskus-utils-types<Get the first index (starting from 1) of a type or 0 if nonethaskus-utils-typesGet the first index of a typeHhaskus-utils-typesGet all the indexes of a typeuhaskus-utils-typesGet the first index of a typeIhaskus-utils-typesGet the first index of a typeJhaskus-utils-types)Keep only a single value of the head typeKhaskus-utils-types%Keep only a single value of each typeLhaskus-utils-typesRemove a in lMhaskus-utils-types Zip two listsNhaskus-utils-types&Map to 1 if type equality, 0 otherwiseOhaskus-utils-typesGet list indexesvhaskus-utils-typesHelper for CheckMembersPhaskus-utils-types(Check that a list is a subset of anotherwhaskus-utils-typesHelper for CheckMemberQhaskus-utils-types*Check that a type is member of a type listRhaskus-utils-typesGenerate a list of Nat [n..m-1]Shaskus-utils-typesRemove types at several indexesThaskus-utils-types*Remove a type at index (0 == don't remove)Uhaskus-utils-typesRemove a type at indexVhaskus-utils-typesReverse a listWhaskus-utils-types replace types at offsets ns in lXhaskus-utils-typesreplace a type at offset n in lYhaskus-utils-typesreplace a type by another in lZhaskus-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-typesHead of a list`haskus-utils-typesSnocahaskus-utils-typesInit of a listbhaskus-utils-typesTake elements in a listchaskus-utils-typesDrop elements in a listdhaskus-utils-typesTail of a listxhaskus-utils-typesHelper for Minehaskus-utils-typesGet the min of a list of Natsyhaskus-utils-typesHelper for Maxfhaskus-utils-typesGet the max of a list of Natsghaskus-utils-typesMap a type function,<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg,`^\MUTSLKJ_dabc[ZYXWCBQPA@?>=<IHGFEDVRgfe]ONNone.FHXkaMhhaskus-utils-typesA natural value Proxyz{|}~hihiSafe -.HUVXkb kk  Noneb…n z{|}~ !"#$%&'()*+,-.123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghikNone.HUVi!lhaskus-utils-typesaExtract types of the fields of a data type - only support data type with a single constructormhaskus-utils-typestExtract fields of a data type: - require selector symbols - only support data type with a single constructorqhaskus-utils-types Named fieldi€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàálmnopqqpnomlâ              !" # $ % & ' ( ) ) * + , - - ./0123456789:;<=>?@A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwwxyz{|}~€‚ƒ„…†‡ ˆ‰ ˆŠ ˆŠ ˆ‹ ˆ‹ Œ ŒŽ Œ Œ Œ‘ Œ’ Œ“ Œ” Œ• Œ– Œ— Œ˜ Œ™ Œš Œ› Œœ Œ Œž ŒŸ Œ  Œ¡ Œ¢ Œ£ Œ¤ Œ¤ Œ¥ Œ¥ Œ¦ Œ§ Œ§ Œ¨ Œ© Œ© Œª Œ« Œ« Œ¬ Œ­ Œ® Œ¯ Œ° Œ° Œ± Œ² Œ³ Œ´ Œµ Œ¶ Œ· Œ¸ Œ¹ Œº Œ» Œ¼ Œ½ Œ¾ Œ¿ ŒÀ ŒÁ Œ ŒÃ ŒÄ ŒÅ ŒÆ ŒÇ ŒÈ Œ½ Œ¾ Œ¿ ŒÀ ŒÁ Œ ŒÉ ŒÊ ŒË ŒÌ ŒÍ ŒÎ ŒÏ ŒÐ ŒÑ ŒÒ ŒÓ ŒÔ ŒÕ ŒÖ Œ× ŒØ ŒÙ ŒÚ ŒÛ ŒÜ ŒÝ ŒÞ Œß Œà Œá Œâ Œãä/haskus-utils-types-1.4.1-LGBTCGkt7xfBRiF0JDoJULHaskus.Utils.Types.NatHaskus.Utils.Types.SymbolHaskus.Utils.Types.ConstraintHaskus.Utils.Types.ErrorHaskus.Utils.Types.ProxyHaskus.Utils.Types.BoolHaskus.Utils.Types.ListHaskus.Utils.Types.GenericsAssert..Haskus.Utils.Typesbase GHC.TypeNatsKnownNat GHC.TypeLits KnownSymbolghc-prim GHC.Types 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 ReplicateLengthConcatHeadSnocInitTakeDropTailListMinListMaxMapNatVal $fShowNatVal symbolValueExtractFieldTypes ExtractFields LookupFieldLookupFieldType FieldTypeFieldWord 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