Solutions to "99 Haskell Problems": http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems