Я изучаю Haskell, надеюсь, что это позволит мне приблизиться к функциональному программированию, прежде чем перейти к нему, я в основном использую языки C-sytanx, такие как языки программирования C, Java или D.
Я следил за учебником по Викиучебнику, это хорошо, до сих пор я мог понять большинство из них до главы "Простой ввод и вывод",
Но у меня есть небольшой вопрос о стиле кодирования if/else контрольного блока, используемого в учебнике.
В wikibook код выглядит следующим образом:
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-sytnax, таком как язык программирования, где мы должны идентифицировать if/else if/else в одном столбце.
Я знаю, что это просто не работает в Haskell, потому что это вызовет ошибку синтаксического анализа, если я укажу "else" в том же столбце "if".
Но как насчет следующего? Я думаю, что это намного яснее, чем выше. Но так как вышеупомянутое используется Wikibook и еще одним учебником 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!"
Итак, мне интересно, какой стиль кодирования используется чаще или есть стиль кодирования anthoer для этой части кода? Я тоже хотел бы это знать.