Yet another FizzBuzz in Haskell
[fizz x | x &lt;- xs] is the same as map fizz xs, so fizzBuzz = map fizz.

You can use putStrLn instead of print to print strings without quotes.

Using the fact that map (g . f) = map g . map f,  you can merge mapM_ putStrLn and map fizz into:

mapM_ (putStrLn . fizz) [1..15]




Another solution with everything in single function and without mod x 15:

import Control.Monad (forM_, when)

fizzBuzz :: IO ()
fizzBuzz = forM_ [1..15] $ \x -&gt; do
  let [m3, m5] = map ((==0) . mod x) [3,5]
  when m3 $ putStr "Fizz"
  when m5 $ putStr "Buzz"
  when (not m3 &amp;&amp; not m5) $ putStr $ show x
  putStrLn ""