úÎ!*Ï$‹o      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnUnsafe .456FHISUVX ® compact-sequencesUnsafely convert a o of size n to an  n . This is genuinely unsafe: if na is greater than the true array size, then some operation will eventually violate memory safety.compact-sequencesñAppend two arrays of the same size. We take the size of the argument arrays so we can build the result array before loading the first argument array into cache. Is this the right approach? Not sure. We *certainly* don't want to just use p , because    TrustworthyF¨   None .1456FXÀ.compact-sequences¦Uncons from a node and snoc onto it. Ensure that if the operation is expensive then it leaves the node in a safe configuration. Why do we need this? Suppose we have Two m Two8If we snoc onto this, the operation cascades, and we get Two m ZeroThen when we view, we get One m Zerowhich is not safe.'Instead, we need to view first, getting One m Two0immediately, then snoc on, cascading and getting Three m Zerowhich is safe.If instead we have One m Onehwe have to do the opposite: snoc then view. We might as well just write a dedicated shifting operation. !"%$#&)('*+,-.&)('"%$# !*+,-. Trustworthy%.456FHVXgúBcompact-sequences O(n \log n) . Convert a list to a ;7, with the head of the list at the front of the queue.Ccompact-sequences O(n) (. Convert a list of the given size to a ;7, with the head of the list at the front of the queue. ;<=>?@ABC ;<=<=@>?ABC=4?4Safe ./456HUVX MONPQTSRUVW PQTSRUVMONW Trustworthy %.456HVg$qcompact-sequences O(n \log n) Y. Convert a list to a stack, with the first element of the list as the top of the stack.ecompact-sequences O(n) i. Convert a list of known length to a stack, with the first element of the list as the top of the stack.^_`abcde ^_`_`abdce`4b4d4r      !"#$%&'()*+,-./0123456789:;<=>#$?0@ABCDEFG63=>54 !"H$IJK0LMNOPQRSH$?0TBUDOVWXNRSQPYZ[\]^C_0compact-sequences-0.1.0.0-FfUHxI9cJueHePHJZG4kpT#Data.CompactSequence.Internal.Array#Data.CompactSequence.Queue.Internal!Data.CompactSequence.Queue.Simple#Data.CompactSequence.Stack.Internal!Data.CompactSequence.Stack.Simple(Data.CompactSequence.Internal.Array.SafeSizeArrayMultTwiceMul1getSizeonetwice singletonunsafeSmallArrayToArrayarrayToSmallArray getSingleton# getSingletonA splitArrayappendcreateSmallArrayarraySplitListNsmallArraySplitListN$fFunctorArray$fFoldableArray$fTraversableArrayShiftedAViewA2EmptyA2ConsA2ViewAEmptyAConsAQueueEmptyNodeRDRD0RD1RD2FDFD1FD2FD3 singletonAviewAemptysnocAshiftA$fFoldableQueue $fOrdQueue $fEqQueue $fShowQueue $fFunctorFD $fFoldableFD$fTraversableFD $fFunctorRD $fFoldableRD$fTraversableRD$fFunctorQueue$fTraversableQueue:<snoc|>unconsfromList fromListN $fMonoidQueue$fSemigroupQueue $fIsListQueueStackOneTwoThreeconsAunconsA$fFoldableStack $fShowStack $fOrdStack $fEqStack$fFunctorStack$fTraversableStackcons<| $fIsListStack $fMonoidStack$fSemigroupStack(primitive-0.7.1.0-6Ng9GYhvLyE4pBQRYaGxSxData.Primitive.SmallArray SmallArraybaseGHC.Base<>