#include "CookList.h"

template <class Elem>
class Stack {
  Stack()
    : elems(new ImmutableList<Elem>) {}
  ~Stack() { delete *elems; };

  void push(Elem anElement) {
    elems->addFirst(anElement);
  }
  void pop() { elems->removeFirst(); }
  Elem top() { elems->first(); }
  
private:
  ImmutableList<Elem> *elems;
};
