Hatena::Grouphaskell

(200) Days of Haskell - Ruby 厨だけどハスケルやるよ

2011-10-06

(5) FizzBuzz

| 18:24

四日坊主だと思った? でも残念、

module FB where
    fizzBuzz n = case (n `mod` 3, n `mod` 5) of
                      (0, 0)    -> "FizzBuzz"
                      (0, _)    -> "Fizz"
                      (_, 0)    -> "Buzz"
                      otherwize -> show n
module Main where
    import System
    import FB
    main = do
        a <- getArgs
        mapM_ print $ map fizzBuzz [1 .. (read $ a !! 0)]

この発表 の F# のサンプルが格好良かったので真似した。まあ、敢えて間違った場合らしいですが……

Haskell でも警告が出ます。

module FB where
    fizzBuzz n = case (n `mod` 3, n `mod` 5) of
                      (0, _)    -> "Fizz"
                      (_, 0)    -> "Buzz"
                      (0, 0)    -> "FizzBuzz"
                      otherwize -> show n
FB.hs:2:18:
    Warning: Pattern match(es) are overlapped
             In a case alternative: (0, 0) -> ...

ファイルを二つに分けた際は、

ghc -o fb fb_main.hs FB.hs

こんな感じでいい、のか?

pi8027pi80272011/10/07 18:57main = readLn >>= mapM_ (print . fizzBuzz) . enumFromTo 1

udzuraudzura2011/10/08 09:28試してみます!!!