Exercises for: http://en.wikibooks.org/wiki/Haskell/GADT