・9日目のFizzBuzz
main = loop [1..100]
loop [] = return ()
loop (n:ns) = do
putStrLn(fizzBuzz n)
loop(ns)
fizzBuzz n
| n `mod` 15 == 0 = "FizzBuzz"
| n `mod` 5 == 0 = "Buzz"
| n `mod` 3 == 0 = "Fizz"
| otherwise = show n
「1日目のFizzBuzz」(下記参照)のループはこう書けば良かったのか…。
Haskellの「return ()」は命令型(手続き型)プログラミング言語における「return();」とは全く意味合いが異なるようで要注意だ。見た目はソックリなのに…。
Haskellの勉強を始めて2週間強、I/Oアクションの仕組みがようやくわかってきて、Paizaのスキルチェックの「Dランク」問題なら解けるようになってきた。「Cランク」問題は解ける問題もあるけど、「Cランクの過去問、全問制覇!」はまだちょっと難しそう…。
・1日目のFizzBuzz
main = loop [1..100]
loop (x:[]) = putStrLn(fizzBuzz x)
loop (x:xs) = do
putStrLn(fizzBuzz(x))
loop(xs)
fizzBuzz x
| x `mod` 15 == 0 = "FizzBuzz"
| x `mod` 5 == 0 = "Buzz"
| x `mod` 3 == 0 = "Fizz"
| otherwise = show x