QuickCheck is awesome and indispensable in the Haskell world. Instead of writing a single unit test with a hard coded example case, QuickCheck allows you to describe that unit test generically and it can randomly generate unit tests of the type described, focusing on extrema etc. Very powerful.