úÎt~p€6      !"#$%&'()*+,-./012345 Safe-Inferred<A binary list is a list containing a power of two elements. + Note that a binary list is never empty. 676776None"O(1)&. Build a list with a single element. O(1). Given a binary list l with length 2^k:  lengthIndex l = k O(1)". Number of elements in the list. O(log n)@. Lookup an element in the list by its index (starting from 0). ! If the index is out of range, 8 is returned. O(log n)8. Replace a single element in the list. If the index is , out of range, returns the original list. O(1)1. Append two binary lists. This is only possible 9 if both lists have the same length. If this condition  is not hold, 8 is returned. O(1)<. Split a binary list into two sublists of half the length, ? unless the list only contains one element. In that case, it  just returns that element. O(log n) . Calling  take n xs returns the first min (2^n) (length xs) elements of xs. O(log n) . Calling  takeEnd n xs returns the last min (2^n) (length xs) elements of xs. Calling replicateA n f0 builds a binary list collecting the results of  executing 2^n times the applicative action f.  The same as  2, but the actions are executed in reversed order. O(log n) . Calling  replicate n x builds a binary list with  2^n occurences of x. O(n)7. Build a binary list with the given length index (see ) ) by applying a function to each index. Like  2, but the generator function returns a value in a 9. 3 Therefore, the result is as well contained in a 9. O(log n)*. Get the first element of a binary list. O(log n)). Get the last element of a binary list. O(n). Reverse a binary list. O(n)2. Transform a list of pairs into a flat list. The 9 resulting list will have twice more elements than the  original. O(n). Opposite transformation of  . It halves : the number of elements of the input. As a result, when > applied to a binary list with a single element, it returns  8. : Expression pairBuilder f xs is equivalent to joinPairs (map f xs) , but does C not build any intermediate structure. Used for rewriting rules. ; Expression zipAndJoing f g xs ys is equivalent to pairBuilder f (zipWith g xs ys), L but does not build any intermediate structure. Used for rewriting rules. O(n)*. Zip two binary lists using an operator. O(n)!. Zip two binary lists in pairs. O(n) . Unzip a binary list of pairs. < Expression  unzipMap f xs is equivalent to unzip (map f xs), but / does not create any intermediate structure. =O(log n)@. Calculate the exponent of a positive integer number expressed  as a power of two. O(n)<. Build a binary list from a linked list. If the input list 8 has length different from a power of two, it returns 8. >O(1)F. This is the last exponent that has power of two defined in the type ?. INote: This value is system dependent, since the type 'Int' varies in size  from system to system. @O(1)L. Calculate the next power of two exponent, if there is any. It is possible ) to not find a next one since the type ? is finite. If the input is 5 already a power of two, its exponent is returned. O(n)<. Build a binary list from a linked list. If the input list > has length different from a power of two, fill to the next ( power of two with a default element. JWarning: this function crashes if the input list length is larger than any  ?power of two in the type 'Int'. However, this is very unlikely. O(n)C. Build a binary list from a linked list. It returns a binary list  with length 2 ^ n (where n is the supplied ? argument), and H the list of elements of the original list that were not used. If the  input list is shorter than 2 ^ n$, a default element will be used to M complete the binary list. This method for building binary lists is faster  than both  and . O(n)D. Create a list from the elements of a binary list matching a given  condition. O(n)E. Create a list extracting a sublist of elements from a binary list. `Apply an applicative action to every element in a segment of a binary list, from left to right. ,Index to look for Element to insert  A:;<=>@Default element  Length index  Input list BCDEFGHIJ   , A:;<=>@BCDEFGHIJNoneFThe result of decoding a binary list, which produces a list of binary J lists of increasing size, ending in either a decoding error or a final + binary list. When this is the result of 3, it K contains sublists of order 1, 2, 4, 8, ... up to the order of the total I list (unless an error has been encountered first). These sublists are N either a section starting at the left, or a section starting at the right,  depending on the + of encoding. AA decoding error, with an error message and the remaining input. &Full binary list and remaining input. 0Partial binary list, and rest of decoded input. !HA binary list decoded, from where you can extract a binary list. If the L decoding process fails in some point, you still will be able to retrieve I the binary list of elements that were decoded successfully before the  error. #Direction of encoding. $Length index (see ) of the binary list. %Decoded data. &;A binary list encoded, ready to be written in a file or be ; sent over a network. It can be directly translated to a  K using 4, or restored  using 5. (Direction of encoding. )Length index (see ) of the binary list. *Encoded data. ++Direction of encoding. If the direction is -, : the binary list will be encoded from left to right. If  the direction is ,, the binary list will be = encoded in the opposite way. Choose a direction according < to the part of the list you want to have access earlier. : If you foresee reading only a part of the list, either > at its beginning or end, an appropiate choice of direction 3 will allow you to avoid decoding the full list. .Encode a binary list using the L instance of  its elements. /Decode a binary list using the L instance of  its elements. It returns a M in case of  decoding failure. 0HEncode a binary list, using a custom serialization for its elements and  an user-supplied direction. 1RGet the final result of a decoding process, unless it returned an error, in which $ case this error is returned as a M. 2=Break a list down to sublists of order 1, 2, 4, 8, ..., 2^k.  The result is stored in a  value. Obviously, the output # will not have a decoding error. 3Decode an encoded binary list.  The result is given as a ! value, which can then be # queried to get partial results. 42Translate an encoded binary list to a bytestring. 5WTranslate a bytestring to an encoded binary list, in case this is possible. Otherwise, 4 it returns a string with a human-readable error.  !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345./+-,&'()*0!"#$% 12345  !"#$%&'()*+-,./012345N      !"#$%%&'())*+,-./0123456789:;<:=>?@ABCDEFGHIJKLMNOPQRSTUVW:=XYbinary-list-0.3.5.0Data.BinaryListData.BinaryList.SerializeData.BinaryList.InternalBinList singleton lengthIndexlengthlookupreplaceappendsplittaketakeEnd replicateA replicateAR replicategenerate generateMheadlastreverse joinPairs disjoinPairszipWithzipunzipfromListfromListWithDefault fromListSplit toListFilter toListSegmenttraverseSegmentDecoded DecodingError FinalResult PartialResultDecodedBinList decDirection decLengthdecDataEncodedBinList encDirection encLengthencData Direction FromRightFromLeftencodedecode encodeBinList fromDecoded toDecoded decodeBinListencodedToByteStringencodedFromByteStringListNodeListEndbase Data.MaybeNothingGHC.BaseMonad pairBuilder zipAndJoinunzipMapexponentInBasisTwolastExponentOfTwoghc-prim GHC.TypesIntnextExponentOfTwodisjoinPairsNodestraverseSegmentFromTotraverseSegmentFromtraverseSegmentTo traverseFullmap$fTraversableBinList$fFoldableBinList$fFunctorBinList $fShowBinListbytestring-0.10.0.2Data.ByteString.Lazy.Internal ByteStringbinary-0.7.2.2Data.Binary.ClassBinaryString