(* Stack.sml *)open List;type 'a t = 'a list ref;exception Empty;fun new() = ref [];fun push x s = (s := x :: !s);fun pop s = case !s of [] => raise Empty | x :: xs => (s := xs; x);fun peek s = case !s of [] => raise Empty | x :: xs => x;fun update x s = case !s of [] => raise Empty | _ :: xs => (s := x :: xs);fun null s = List.null (!s);fun clear s = (s := []);
(* Stack.sml *)
open List;
type 'a t = 'a list ref;
exception Empty;
fun new() = ref [];
fun push x s = (s := x :: !s);
fun pop s =
case !s of
[] => raise Empty
| x :: xs => (s := xs; x)
;
fun peek s =
case !s of
[] => raise Empty
| x :: xs => x
;
fun update x s =
case !s of
[] => raise Empty
| _ :: xs => (s := x :: xs)
;
fun null s = List.null (!s);
fun clear s = (s := []);