public IEnumerator <T> GetEnumerator() { for (IImStack <T> stack = this; !stack.IsEmpty; stack = stack.Pop()) { yield return(stack.Peek()); } }
private ImStack(T head, IImStack <T> tail) { _head = head; _tail = tail; }