The Data Abstraction Principle:
Don't use constructors and selectors in ways that assume anything about
the data representation.
For example, don't do any of these:
(size-of-pile (* 6 6) 1) Assumes game state is represented as a number