我正在学习 Haskell,希望它能帮助我更接近函数式编程。以前,我主要使用具有类 C 语法的语言,如 C、Java 和 D。
我对 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
我知道它在 Haskell 中不起作用,因为如果我缩进else
与if
.
但是下面的风格呢?我认为它比上面的要清楚得多。但是由于上面的内容被 Wikibooks 和 Yet Another Haskell Tutorial 使用,在 Haskell 官方网站上被标记为“最佳在线教程”,我不确定这种编码风格是否是 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!"
所以,我很好奇哪种编码风格更常用——或者这段代码是否还有另一种编码风格?