diff options
Diffstat (limited to 'stdlib/stack.mli')
-rw-r--r-- | stdlib/stack.mli | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/stdlib/stack.mli b/stdlib/stack.mli new file mode 100644 index 000000000..a1133edcc --- /dev/null +++ b/stdlib/stack.mli @@ -0,0 +1,25 @@ +(* Stacks *) + +(* This modl implements stacks (LIFOs), with in-place modification. *) + +type 'a t + (* The type of stacks containing elements of type ['a]. *) + +exception Empty + (* Raised when [pop] is applied to an empty stack. *) + +val new: unit -> 'a t + (* Return a new stack, initially empty. *) +val push: 'a -> 'a t -> unit + (* [push x s] adds the element [x] at the top of stack [s]. *) +val pop: 'a t -> 'a + (* [pop s] removes and returns the topmost element in stack [s], + or raises [Empty] if the stack is empty. *) +val clear : 'a t -> unit + (* Discard all elements from a stack. *) +val length: 'a t -> int + (* Return the number of elements in a stack. *) +val iter: ('a -> 'b) -> 'a t -> 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. *) |