FizzBuzz up to 99 in Haskell
You could separate your I/O from the pure code:

fizzBuzz :: Int -&gt; String
fizzBuzz n | mod n 3 == 0 &amp;&amp; mod n 5 == 0 = "FizzBuzz"
           | mod n 5 == 0                 = "Buzz"
           | mod n 3 == 0                 = "Fizz"
           | otherwise                    = show n

main = mapM print (map fizzBuzz [0..100])