全くなんの工夫もないが

$ cat fizzbuzz.hs
import Control.Monad (mapM_)

main = mapM_ (runFizzBuzz . gizz . buzz . fizz) [1, 3, 5, 7, 15, 21, 35, 105]

runFizzBuzz (n, s)
 | s == "" = putStrLn $ show n
 | otherwise = putStrLn $ show s

fizz n
 | n `mod` 3 == 0 = (n, "Fizz")
 | otherwise = (n, "")

buzz (n, s)
 | n `mod` 5 == 0 = (n, showString s "Buzz")
 | otherwise = (n, s)

gizz (n, s)
 | n `mod` 7 == 0 = (n, showString s "Gizz")
 | otherwise = (n, s)

$ runghc fizzbuzz.hs
1
"Fizz"
"Buzz"
"Gizz"
"FizzBuzz"
"FizzGizz"
"BuzzGizz"
"FizzBuzzGizz"