Notice that, crucially, a pop operation does not change the underlying list at all, and a push operation only adds to the front of a list.
the stack operations are non-destructive, in the sense that once you hold a reference to a stack, the view of the stack through this reference does not change regardless of future operations that are applied to the stack.