This is my first attempt at a nontrivial Haskell project.