h*$M      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn o p q r s 1.6  Safe-Inferred 01 ; 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-typesGeneric 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/,*+)-.('&%$#"! /,*+)-.('&%$#"!  Safe-Inferred/01 2haskus-utils-typesBuild a list of constraints e.g., ConstraintAll1 Eq '[A,B,C] ==> (Eq A, Eq B, Eq C)22 Safe-Inferred 01 C3haskus-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).For 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)If GHC cannot solve `F n ~ Word`, it shows: ERROR If GHC cannot solve `G n ~ Word`, it shows: can't match  `Assert...` with t33 Safe-Inferred 01 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;< :98754   6;< :98754   6 Safe-Inferred /015=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=JIHGFEWSihg^PO-b_]NVUTMLKa`fcde\[ZYXDCRQBA@?>=JIHGFEWSihg^PO Safe-Inferred1jhaskus-utils-typesA natural value Proxy}~jkjk Safe-Inferred 01m m  Safe-Inferred#@`  3(/%'}~78F,*+)-.&$#"! b_]NVUTMLKafcde\[ZYXDCRQBA?>=JIHGEWSihg^POjk:95462;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}}~                                                                                                                  -haskus-utils-types-1.6-63g3g8RBV5aCEpBbFuef5HHaskus.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.Genericshaskus-utils-typesbase GHC.TypeNatsKnownNat GHC.TypeLits KnownSymbolghc-prim GHC.TypesType Constraint GHC.TypeError TypeErrorGHC.PrimProxy#Symbol+*^-GHC.TypeLits.Internal CmpSymbolGHC.TypeNats.InternalCmpNatDivModLog2Text:<>::$$:ShowType ErrorMessage Data.Type.Ord<=?<=SomeNatNat someNatValsameNat SomeSymbol someSymbolVal sameSymbolAllTrueAllFalseXorManyOrManyAndManyXorOrAndNotXorBOrBAndBNotB KnownBool boolValueIf$fKnownBoolBoolFalse$fKnownBoolBoolTrueConstraintAll1Assert 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.ProxyKProxyProxy asProxyTypeOf GHC.GenericsGenericRepfromtoGeneric1Rep1from1to1Datatype datatypeName moduleName packageName isNewtype ConstructorconName conFixity conIsRecordSelectorselNameselSourceUnpackednessselSourceStrictnessselDecidedStrictnessV1U1Par1unPar1Rec1unRec1K1unK1M1unM1:+:L1R1:*::.:Comp1unComp1RDCSRec0D1C1S1URecUAddrUCharUDoubleUFloatUIntUWorduWord#uInt#uFloat#uDouble#uChar#uAddr#MetaMetaDataMetaConsMetaSel Generically1 GenericallyDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackSourceStrictness SourceLazy SourceStrictNoSourceStrictnessSourceUnpackedness SourceUnpackSourceNoUnpackNoSourceUnpackedness AssociativityLeftAssociativeRightAssociativeNotAssociativeFixityIPrefixIInfixIFixityPrefixInfixprec