|
import Data.Bool (bool)
|
|
|
|
fizzBuzz :: [String]
|
|
fizzBuzz =
|
|
let fb n k = cycle $ replicate (pred n) [] <> [k]
|
|
in zipWith
|
|
(flip . bool <*> null)
|
|
(zipWith (<>) (fb 3 "fizz") (fb 5 "buzz"))
|
|
(show <$> [1 ..])
|
|
|
|
main :: IO ()
|
|
main = mapM_ putStrLn $ take 100 fizzBuzz
|