úÎ!-ê+ø     Circular stacks of fixed size(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneSX*ÝcircularcCircular stacks with fxed maximum size are just normal vectors with a pointer to the last element.Construction of s is done with  and subsequent ˆes, or the provided type conversion functions so that the index and bounds are updated and checked consistently. The data constructor Y is exported only to enable creation of orphan instances such as Arbitrary (QuickCheck)..When denoting the efficiency of the functions m/ refers to the current size of the stack, and n to the maximum size.circularpA circular stack without an element but of a given maximum size. At this state, it is not very useful :). O(n).circularSee /; do no check that length is strictly positive.circularÔConvert a circular stack to a vector. The first element of the returned vector is the deepest (oldest) element of the stack, the last element of the returned vector is the current (newest) element of the stack./This is a relatively expensive operation. O(m).circularìConvert the last N elements of a circular stack to a vector. The first element of the returned vector is the deepest (oldest) element of the stack, the last element of the returned vector is the current (newest) element of the stack.,The size of the stack must be larger than N./This is a relatively expensive operation. O(N). circularSee % but do not check that N is positive. circularÈConvert a vector to a circular stack. The first element of the vector is the deepest (oldest) element of the stack, the last element of the vector is the current (newest) element of the stack. O(n).The vector must be non-empty. circularSee  # but do not check for empty vector. circular6Get the last element without changing the stack. O(1). circular8Get the last element and remove it from the stack. O(1).The stack must be non-empty.circular5Push an element on the stack. Slow! If possible, use . O(n).circular#Push an element on the stack. O(1).oBe careful; the internal vector is mutated! The immutable circular stack may not be used after this operation.circularReset the stack. O(1).circularCheck if the stack is full.circularLeft fold. O(m).circular(Left fold with strict accumulator. O(m).circular=Left fold on non-empty vectors with strict accumulator. O(m).circular3Compute the sum of the elements on the stack. O(m).circular7Compute the product of the elements on the stack. O(m).circularWe have c /= FromJSON $ ToJSON cR, but the elements on the stack and their order are correctly saved and restored.  Safe+Ó !"#      !"#$%%circular-0.1.1-844EImmjOdw5Q6kN031WZdData.Stack.CircularPaths_circularCStackstackindexcurSizeempty unsafeEmptytoVector toVectorNunsafeToVectorN fromVectorunsafeFromVectorgetpoppush unsafePushresetisFullfoldlfoldl'foldl1'sumproduct$fFromJSONCStack$fToJSONCStack $fShowCStack $fEqCStackversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName