我正在学习Haskell,希望它能帮助我更接近函数式编程。以前,我主要使用类似C语法的语言,如C、Java和D。
我对关于Wikibooks的教程。代码如下:
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
others。
我知道它在Haskell中不起作用,因为如果我在if
的同一列缩进else
,那将是一个解析错误。
但是下面的风格呢?我认为这比上面的要清楚得多。但由于以上内容被Wikibooks和另一个Haskell教程使用,该教程在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!"
所以,我很好奇哪种编码风格更常用,或者这段代码有其他编码风格吗?