module Main where import Control.Applicative import Data.Maybe f :: Integer -> String -> Integer -> Maybe String f k s i = if i `rem` k == 0 then Just s else Nothing opts = [f 15 "FizzBuzz", f 3 "Fizz", f 5 "Buzz"] fizzBuzz n = fromJust $ foldr1 (<|>) $ (opts <*> pure n) <> [Just $ show n] main = mapM_ (putStrLn . fizzBuzz) [1..1000]