GENERIC IMPLEMENTATION MODULE GTwice; PROCEDURE Init (VAR s : Stack); BEGIN s.top := NIL; s.depth := 0 END Init; PROCEDURE Push (VAR s : Stack; v : T); VAR n : Node; BEGIN NEW(n); n^.val := v; n^.next := s.top; s.top := n; s.depth := s.depth + 1 END Push; PROCEDURE Pop (VAR s : Stack; VAR v : T) : BOOLEAN; VAR n : Node; BEGIN IF s.top = NIL THEN RETURN FALSE END; n := s.top; v := n^.val; s.top := n^.next; s.depth := s.depth - 1; RETURN TRUE END Pop; END GTwice.