Haskell で FizzBuzz ってみた
だいぶ前に書いたんだけど、すっかり忘れてたのでもっかい書いた。
[1..100]
でもよかったかもしれない。
module Main where import Control.Monad (forM_) numsFrom :: Integer -> [Integer] numsFrom n = n : numsFrom (n + 1) isFizz :: Integer -> Bool isFizz n = n `mod` 3 == 0 isBuzz :: Integer -> Bool isBuzz n = n `mod` 5 == 0 isFizzBuzz :: Integer -> Bool isFizzBuzz n = (isFizz n) && (isBuzz n) toFizzBuzz :: Integer -> String toFizzBuzz n | isFizzBuzz n = "FizzBuzz" | isFizz n = "Fizz" | isBuzz n = "Buzz" | otherwise = show n main :: IO () main = let fizzbuzz = map toFizzBuzz (take 100 (numsFrom 1)) in forM_ fizzbuzz putStrLn