Haskell関係なく、(Int, String) -> (Int, String)を作るあたりがまわりくどいな
fizzとbuzz以外のルールを将来追加する可能性を考えてそういう形にしてるの?

それから、ググったら同じ構造のコードが出て来たんだが、引用元に批判を加えて欲しいの?