@oa55.5.0+dev0-2025-04-28/%Stack!tA;!a@|@A@A@O@B@@@6../../stdlib/stack.mliaa@@@@%Stack@@A@±%EmptyB##exnG@@@AdDDdDS@@A@B@&create@$unitc@@@@@%Stackd!t!a@C@@@@@@@1h2h@@0B@@$push@!a@C@@@@%Stacke!t@@@@@5f@@@@@@@@VkWk@@UC@@#pop@%Stackg!t!a@C@@@@@@@@@rnJJsnJ^@@qD@@'pop_opt@%Stackh!t!a@C@@@@@@&optionL @@@@@@rr@@E@@$drop@%Stacki!t!a@C@@@@@@j@@@@@@wwwww@@F@@#top@%Stackk!t!a@C@@@@@@@@@|  |  @@G@@'top_opt@%Stackl!t!a@C@@@@@@` @@@@@@@  @  @@H@@%clear@%Stackm!t!a@C@@@@@@n@@@@@@E  E  *@@I@@$copy@%Stacko!t!a@C@@@@@@%Stackp!t@@@@@@9H V V:H V m@@8J@@(is_empty@%Stackq!t!a@C@@@@@@$boolr@@@@@@[K  \K  @@ZK@@&length@%Stacks!t!a@C@@@@@@#intt@@@@@@}N  ~N  @@|L@@$iter@@!a@C@@@xu@@@@@@@@%Stackv!t@@@@@w@@@@@@@@Q Z ZQ Z @@M@@$fold @@#acc@C@@@@!a@C@@@@@@@@@@@@@%Stackx!t@@@@@!@@@@@@@V : :V : q@@N@@&to_seq`@%Stacky!t!a@ }C@@@@@@ z&Stdlibz#Seq!t@@@ y@@ {@^ ^ ^^ ^ {@@O@@'add_seqa@%Stack{!t!a@ C@ ~@@@ @@ @&Stdlib|#Seq!t@@@ @@ }@@@ @@ @@ @4c  5c @@3P@@&of_seqb@&Stdlib~#Seq!t!a@ C@ @@@ @@ %Stack!t@@@ @@ @[gii\gi@@ZQ@@@39Last-in first-out stacks.@ F This module implements stacks (LIFOs), with in-place modification.@@@@@@@@@@@5unsynchronized_access :Unsynchronized accesses to stacks are a programming error.@A6../../stdlib/stack.mli7Unsynchronized accesses@@ Unsynchronized accesses to a stack may lead to an invalid queue state. Thus, concurrent accesses to stacks must be synchronized (for instance with a 'Mutex.t@@").@#'Stack.t3 /The type of stacks containing elements of type "'a!.@@@@@@@@@@@@O@@A@@@@+Stack.Empty3,Raised when )Stack.popD@$ or )Stack.topD@> is applied to an empty stack.@@@@@@@@@@@@@@@@@@,Stack.create3 $Return a new stack, initially empty.@@@@@@@@@@@@@ @@@@*Stack.push3(push x s2 adds the element !x5 at the top of stack !s!.@@@@@@@@@@@@@@"@@@@D3%pop s 2 removes and returns the topmost element in stack !s/, or raises ^G@7 if the stack is empty.@@@@@@@@@@@@@?@@@@-Stack.pop_opt3)pop_opt s 2 removes and returns the topmost element in stack !s0, or returns $None7 if the stack is empty.@@@@$4.08@@@@@@@@_@@@@*Stack.drop3&drop s & removes the topmost element in stack !s/, or raises G@7 if the stack is empty.@@@@#5.1@@@@@@@@@@@@3%top s & returns the topmost element in stack !s/, or raises G@7 if the stack is empty.@@@@@@@@@@@@@@@@@-Stack.top_opt3)top_opt s & returns the topmost element in stack !s(, or $None7 if the stack is empty.@@@@$4.08@@@@@@@@@@@@+Stack.clear3 "Discard all elements from a stack.@@@@@@@@@@@@@@@@@y*Stack.copy3 !Return a copy of the given stack.@@@@@@@@@@@@z@{@@@@c.Stack.is_empty3'Return $true> if the given stack is empty, %false+ otherwise.@@@@@@@@@@@@p@q@@@@\,Stack.length3 >Return the number of elements in a stack. Time complexity O(1)@@@@@@@@@@@@]@^@@@@I*Stack.iter3(iter f s) applies !f< in turn to all elements of !s z, from the element at the top of the stack to the element at the bottom of the stack. The stack itself is unchanged.@@@@@@@@@@@@Y@"Z@%J@@@@<*Stack.fold3-fold f accu s$ is #(f (... (f (f accu x1) x2) ...) xn)+ where "x1: is the top of the stack, "x2= the second element, and "xn , the bottom element. The stack is unchanged.@@@@$4.03@@@@@@@Z@Q[@TF@WE@@@@