use two ways to representation complex numbers
tagged data to support different representations
abstracting, use data-directed programming
solve exercise 2.73