a"1     None&!"&(*+-0134579<>@CFHIJKLNUV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None&!"&(*+-0134579<>@CFHIJKLNUVNone&!"&(*+-0134579<>@CFHIJKLNUVA newtypeS wrapper which provides an array-like interface to a type, which has instances of ", & and H.8You can construct bit arrays by wrapping numeric values:BitArray (7 :: Int8)[qq|00000111|]"or directly from numeric literals:7 :: BitArray Int8[qq|00000111|]@or using a binary notation quasi-quoter, assuming you have the  QuasiQuotes pragma turned on:q|0111|] :: BitArray Int8[qq|00000111|]BitArray derives the " and &r instances from the base type, so it supports all the standard bitwise operations for fixed-size integral types.A binary number quasi-quoter. Produces a numeric literal at compile time. Can be used to construct both bit arrays and integral numbers.[qq|011|] :: Int3[qq|011|] :: BitArray Int8[qq|00000011|]+Unwrap the underlying value of a bit array.&Convert into a binary notation string.toString (BitArray (5 :: Int8)) "00000101"Parse a binary notation string.*parseString "123" :: Maybe (BitArray Int8)Nothing*parseString "101" :: Maybe (BitArray Int8)Just [qq|00000101|] Convert into a list of set bits.CThe list is ordered from least significant to most significant bit."Construct from a list of set bits.TConvert into a list of boolean values, which represent the "set" flags of each bit.CThe list is ordered from least significant to most significant bit. HConstruct from a list of boolean flags for the "set" status of each bit.HThe list must be ordered from least significant to most significant bit. Map over the set bits. 3Perform a right-associative fold over the set bits. Traverse thru set bits. Traverse thru set bits.#Parses a literal of zeros and ones."read "[qq|1110|]" :: BitArray Int8[qq|00001110|]!unwrap (read "[qq|1110|]") :: Int14%Produces a literal of zeros and ones.show (BitArray (5 :: Int8))"[qq|00000101|]"          !"!#$%&'(%) *+,-,./0121314156768,9:;<=>?@?A?B?C?DEF/G/H/I/JKLMNOPQ1R1S6TUV/W/XYZ[\,]6^_`/aUb/cdefgMhEijklmnopqrqsqtquqvwxwywzw{|}~q//qqMqqqqqffff''''''''''''''''''''''''''''''''''ZZZZZZZZZZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z345K6K7K8K9K:K;K<K=K>K?K@KAKBKCmDmEmFmGmHmImJmKmLMNMOMPMPMQMRMSMTMUMVMWMXMX?Y?Z?[?\?]?^?_?`?a?b?c?d?d?e?f?g?h?i?j?k?l?l?mnopqrstuvwxyz{|}|~|||||||'''' ' ' ' ' ' ' ' ' ' '''''''''''''' !"#"$"%"&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9:9;9<9=9>9?9@9@9A9B9C9D9E9F9GHIHJHKHLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk[kk\kk]k^k_k`kakbkckdkekkfkgkhkikjk kkklmnmompmpmqmrmrmsmtmtmumvmvmwmxmxmymzmzm{m|m|m}m~m~mmmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM______UUUUUUUUUUUU U U U U UUUUUUUUUUUUUUUU ! " # $%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z1[1\1]1^1_1`abacadefeghidjdkdldmdndodpdqrstuvwxyz{|}~!!!,,,,,9;6666666666bitar_LQMbnw8WPfj5y6JLMfC6lnBitArrayBitArray.PreludeBitArray.ParserqqunwraptoString parseStringtoListfromList toBoolList fromBoolListmapfoldrmapM_ traverse_$fIsStringBitArray$fReadBitArray$fShowBitArrayboolbaseGHC.Base++GHC.Errerrorghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwise GHC.MagiclazyGHC.IO.Exception assertErrorinline$ undefinedGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturn Control.Arrowarrfirstapp|||loop Data.String fromString fromIntegral realToFrac toInteger toRational Control.MonadguardData.Typeable.InternalmkAppTyjoin<*>pureBoundedEnumEq GHC.FloatFloating FractionalIntegralMonad Data.DataDataFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowGHC.ArrIxTypeableIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeIntegerOrderingRatioRational RealWorldIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherStringTypeRepFalseTrueLeftRightLTEQGTGHC.IO.Handle.TypesHandlerangeindexinRange rangeSizeGHC.STSTuntangle ioException heapOverflow stackOverflowallocationLimitExceededblockedIndefinitelyOnSTMblockedIndefinitelyOnMVar ioe_filename ioe_errnoioe_description ioe_locationioe_type ioe_handleIOError InterruptedResourceVanished TimeExpiredUnsupportedOperation HardwareFaultInappropriateTypeInvalidArgument OtherError ProtocolError SystemErrorUnsatisfiedConstraints UserErrorPermissionDeniedIllegalOperationEOFResourceExhausted ResourceBusy NoSuchThing AlreadyExistsunsupportedOperationSystem.TimeouttimeoutSystem.Mem.StableName eqStableNamehashStableNamemakeStableName StableName System.Mem performGCperformMajorGCperformMinorGC System.Exitdie exitSuccess exitFailureexitWith Data.STRef modifySTRef' modifySTRef Data.RatioapproxRational Data.Fixed showFixedmod'divMod'div'MkFixedFixed resolution HasResolutionE0UniE1DeciE2CentiE3MilliE6MicroE9NanoE12Pico Debug.Trace traceMarkerIO traceMarker traceEventIO traceEvent traceStack traceShowM traceShowId traceShowtraceIdtrace putTraceMsgtraceIO tyconModule tyconUQname isNorepType mkNoRepType mkCharConstr mkRealConstrmkIntegralConstr mkCharType mkFloatType mkIntTypemaxConstrIndex constrIndex indexConstr isAlgType readConstr showConstr constrFixity constrFieldsdataTypeConstrsmkConstr mkDataType repConstr constrRep constrType dataTypeRep dataTypeName fromConstrM fromConstrB fromConstrgmapMogmapMpgmapMgmapQigmapQgmapQrgmapQlgmapT dataCast2 dataCast1 dataTypeOftoConstrgunfoldgfoldlDataTypeConstrNoRepCharRepFloatRepIntRepAlgRepDataRep CharConstr FloatConstr IntConstr AlgConstr ConstrRepConIndexInfixPrefixFixity Data.ListisSubsequenceOfmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMfoldMapDefault fmapDefault mapAccumR mapAccumLforMsequencemapM sequenceAtraverseControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++ ArrowChoice ArrowApply ArrowMonad ArrowLoopreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.IO.HandlehClose GHC.Conc.IO registerDelay threadDelay closeFdWiththreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadioManagerCapabilitiesChangedensureIOManagerIsRunningSystem.IO.Error catchIOErrorannotateIOError modifyIOErrorioeSetFileName ioeSetHandleioeSetLocationioeSetErrorStringioeSetErrorTypeioeGetFileName ioeGetHandleioeGetLocationioeGetErrorStringioeGetErrorTypeisUserErrorTypeisPermissionErrorTypeisIllegalOperationErrorTypeisEOFErrorTypeisFullErrorTypeisAlreadyInUseErrorTypeisDoesNotExistErrorTypeisAlreadyExistsErrorType userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isEOFError isFullErrorisAlreadyInUseErrorisDoesNotExistErrorisAlreadyExistsError mkIOError tryIOErrorGHC.Conc.Signal runHandlers setHandlerSignal HandlerFunSystem.IO.Unsafe unsafeFixIOControl.ExceptionallowInterruptcatchesHandlerControl.Exception.BasebracketOnErrorbracket_finallybracket onException mapException handleJusthandle catchJustcatchPatternMatchFail RecSelError RecConError RecUpdError NoMethodErrorNonTerminationNestedAtomically GHC.Conc.SyncgetUncaughtExceptionHandlersetUncaughtExceptionHandler reportErrorreportStackOverflowwithMVar writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomically unsafeIOToSTMmkWeakThreadIdthreadCapability threadStatus runSparksparpseq labelThreadyield myThreadIdthrowTo killThread childHandler numSparksgetNumProcessorssetNumCapabilitiesgetNumCapabilitiesnumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOdisableAllocationLimitenableAllocationLimitgetAllocationCountersetAllocationCounterThreadIdBlockedOnOtherBlockedOnForeignCall BlockedOnSTMBlockedOnExceptionBlockedOnBlackHole BlockedOnMVar BlockReason ThreadDied ThreadBlockedThreadFinished ThreadRunning ThreadStatusSTMTVarioErrorasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededAssertionFailedSomeAsyncException UserInterrupt ThreadKilled HeapOverflow StackOverflowAsyncExceptionUndefinedElementIndexOutOfBoundsArrayException ExitFailure ExitSuccessExitCode IOErrorType Data.IORefatomicWriteIORefatomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef mkWeakIORef GHC.IORef writeIORef readIORefnewIORefIORefGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingStatethrowIOunsafeInterleaveIOunsafeDupablePerformIOunsafePerformIOstToIOMaskedUninterruptibleMaskedInterruptibleUnmasked MaskingState userError IOException GHC.Exceptionthrow SomeExceptiondisplayException fromException toException Exception ErrorCallRatioZeroDenominatorDenormal DivideByZeroLossOfPrecision UnderflowOverflowArithException Text.Readread readMaybe readEitherreadsfindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_for_foldlMfoldrMproductsumminimummaximumelemlengthnullfoldl1foldr1foldl'foldlfoldr'foldMapfold Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltisRightisLeftpartitionEithersrightsleftseither Data.Typeablegcast2gcast1gcasteqTcastrnfTyCon rnfTypeRep showsTypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOftypeReptypeRepFingerprint tyConString typeRepArgs typeRepTyConmkTyCon3 funResultTy splitTyConAppmkFunTy mkTyConApp tyConName tyConModule tyConPackagetyConFingerprintTyCon Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7 Data.ProxyProxy Data.OldListunwordswordsunlineslinesunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEndControl.Category>>><<<.idCategoryData.Type.EqualityRefl:~:Data.OrdDown byteSwap64 byteSwap32 byteSwap16lex readParen readListPrecreadPrecreadList readsPrecatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixText.ParserCombinators.ReadPReadS GHC.STRef writeSTRef readSTRefnewSTRefSTRef Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultpopCountrotateRrotateL unsafeShiftRshiftR unsafeShiftLshiftLisSignedbitSize bitSizeMaybetestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.BitscountTrailingZeroscountLeadingZeros finiteBitSize FiniteBitslcmgcd^^^oddeven denominator numerator%divModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc Data.Function&onfix Data.Functorvoid<$>runSTfixST showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailunconshead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeswapuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconstapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA2liftA<**>JustNothingMaybemconcatmappendmemptyMonoid<$<**>manysome<|>empty Alternativemplusmzero MonadPlus Unsafe.Coerce unsafeCoerce/=compare<=&&||not<>maxmindigits bitIndexesbits