20 intermediate haskell exercises from http://blog.tmorris.net/posts/20-intermediate-haskell-exercises/