RosettaCodeData/Task/FizzBuzz/Haskell/fizzbuzz-7.hs

13 lines
376 B
Haskell
Raw Permalink Normal View History

2019-09-12 10:33:56 -07:00
import Control.Monad.State
import Control.Monad.Trans
import Control.Monad.Writer
2016-12-05 22:15:40 +01:00
2019-09-12 10:33:56 -07:00
main = putStr $ execWriter $ mapM_ (flip execStateT True . fizzbuzz) [1..100]
2016-12-05 22:15:40 +01:00
2019-09-12 10:33:56 -07:00
fizzbuzz :: Int -> StateT Bool (Writer String) ()
fizzbuzz x = do
when (x `mod` 3 == 0) $ tell "Fizz" >> put False
when (x `mod` 5 == 0) $ tell "Buzz" >> put False
get >>= (flip when $ tell $ show x)
tell "\n"