関数型プログラミングに近づくのに役立つことを期待して、Haskell を学んでいます。以前は、C、Java、D など、C に似た構文の言語を主に使用していました。
Wikibooks のチュートリアルでif
使用されている/else
コントロール ブロックのコーディング スタイルについて少し質問があります。コードは次のようになります。
doGuessing num = do
putStrLn "Enter your guess:"
guess <- getLine
if (read guess) < num
then do putStrLn "Too low!"
doGuessing num
else if (read guess) > num
then do putStrLn "Too high!"
doGuessing num
else do putStrLn "You Win!"
このコーディング スタイルは、C ライクな言語で推奨されるスタイルに完全に違反しているため、混乱if
しelse if
ますelse
。
else
と同じ列でインデントすると解析エラーになるため、Haskellでは機能しないことはわかっていますif
。
しかし、次のスタイルはどうでしょうか。上記より分かりやすいと思います。しかし、上記は Wikibooks と、Haskell の公式 Web サイトで「オンラインで入手できる最高のチュートリアル」とマークされている Yet Another Haskell Tutorial で使用されているため、このコーディング スタイルが Haskell プログラムの慣例であるかどうかはわかりません。
doGuessing num = do
putStrLn "Enter your guess:"
guess <- getLine
if (read guess) < num then
do
putStrLn "Too low!"
doGuessing num
else if (read guess) > num then do
putStrLn "Too high!"
doGuessing num
else do
putStrLn "You Win!"
では、どのコーディング スタイルがより頻繁に使用されているのか、またはこのコードの別のコーディング スタイルはあるのでしょうか?