Haskell で FizzBuzz。
recFizzBuzz :: Int -> [String]
recFizzBuzz = reverse.recFizzBuzz'
recFizzBuzz' :: Int -> [String]
recFizzBuzz' 0 = []
recFizzBuzz' n | n `mod` 15 == 0 = "FizzBuzz":recFizzBuzz' (n-1)
| n `mod` 3 == 0 = "Fizz":recFizzBuzz' (n-1)
| n `mod` 5 == 0 = "Buzz":recFizzBuzz' (n-1)
|otherwise = show n:recFizzBuzz' (n-1)
caseFizzBuzz' :: Int -> [String]
caseFizzBuzz' 0 = []
caseFizzBuzz' n = case [n `mod` 3 , n `mod` 5 ] of
[0,0] -> "FizzBuzz":caseFizzBuzz' (n-1)
[0,_] -> "Fizz":caseFizzBuzz' (n-1)
[_,0] -> "Buzz":caseFizzBuzz' (n-1)
_ -> show n:caseFizzBuzz' (n-1)
mapFizzBuzz :: Int -> [String]
mapFizzBuzz n = map caseFunc [1..n]
untilFizzBuzz :: Int -> [String]
untilFizzBuzz n = reverse $ until ( (>=n) . length) (\x->caseFunc ((length x)+1):x) []
caseFunc :: Int -> String
caseFunc n = case (n `mod` 3,n `mod` 5 ) of
(0,0) -> "FizzBuzz"
(0,_) -> "Fizz"
(_,0) -> "Buzz"
_ -> show n
schemeFizzBuzz :: Int -> [String]
schemeFizzBuzz = (\(n) -> (reverse (schemeFizzBuzz' (n))))
schemeFizzBuzz' :: Int -> [String]
schemeFizzBuzz' =
(let dec = (\(c)->((-) c 1))
in (\(n) ->
(if ((==) n 0)
then ([])
else (if ((==) (mod n 15) 0)
then ((:) "FizzBuzz" (schemeFizzBuzz' (dec n)))
else (if ((==) (mod n 5) 0)
then ((:) "Buzz" (schemeFizzBuzz' (dec n)))
else (if ((==) (mod n 3) 0)
then ((:) "Fizz"
(schemeFizzBuzz' (dec n)))
else ((:) (show n)
(schemeFizzBuzz' (dec n)))))))))
zipFizzBuzz n = take n $ zipWith (\x y -> if y=="" then x else y)
(map show [1..n])
(zipWith (++) (cycle ["","","Fizz"]) (cycle ["","","","","Buzz"]))