ninety-nine haskell problems: http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems