HaskellでFizzBuzz

30分プログラム、その748。HaskellFizzBuzz
当初の予定ではSchemeで便利なスクリプトを書く予定でしたが、諸事情により中止となりました。(手元のマシンに処理系がインストールされてなかった。)
というわけで、たまたま入っていたHaskellFizzBuzzを書きました。FizzBuzzを書いたのは他にネタが思いつかなかったからです。

使い方

*Main> main
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz

ソースコード

fizz = cycle ["","","Fizz"]
buzz = cycle ["","","","","Buzz"]
digits = map show [1..]

fizzbuzz = zipWith3 f fizz buzz digits
    where f "" "" n = n
          f x  "" _ = x
          f "" y  _ = y
          f x  y  _ = x ++ " " ++ y

main = mapM_ putStrLn fizzbuzz