type 'a stack = Empty | Elem of 'a stack;; let make_stack = let l = ref Empty in fun e -> l := e;;