module Stack: sig .. end
This module implements stacks (LIFOs), with in-place modification.
type t('a);
'a.exception Empty;
let create: unit => t('a);
let push: ('a, t('a)) => unit;
push x s adds the element x at the top of stack s.let pop: t('a) => 'a;
pop s removes and returns the topmost element in stack s,
or raises Empty if the stack is empty.let top: t('a) => 'a;
top s returns the topmost element in stack s,
or raises Empty if the stack is empty.let clear: t('a) => unit;
let copy: t('a) => t('a);
let is_empty: t('a) => bool;
true if the given stack is empty, false otherwise.let length: t('a) => int;
let iter: ('a => unit, t('a)) => unit;
iter f s applies f in turn to all elements of s,
from the element at the top of the stack to the element at the
bottom of the stack. The stack itself is unchanged.