{-# LANGUAGE MonadComprehensions #-} import Data.Maybe (fromMaybe) import Data.Monoid (mconcat) import Control.Applicative ((<*>)) pam = flip map fizzbuzz i trigs = pam [i..] $ fromMaybe . show <*> mconcat . trigs ans = fizzbuzz 1 $ \i -> [["Fizz" | i `rem` 3 == 0] ,["Buzz" | i `rem` 5 == 0] ] main = mapM_ putStrLn $ take 100 ans