Implementing an immutable stack: Provide a program that creates from zero an immutable stack implementation (implement isEmpty(), push(), pop(), and peek() operations).