在haskell if-then-else中递归调用main时,会执行多个语句
这是我的密码在haskell if-then-else中递归调用main时,会执行多个语句,haskell,Haskell,这是我的密码 main :: IO () main = do putStr "Enter user name: " userName <- getLine putStr "Enter filename: " fileName <- getLine contents <- readFile fileName --------SOME CODES HERE------------------ putStrLn ("TI
main :: IO ()
main = do
putStr "Enter user name: "
userName <- getLine
putStr "Enter filename: "
fileName <- getLine
contents <- readFile fileName
--------SOME CODES HERE------------------
putStrLn ("TITLES AND RATINGS OF FILMS BY " ++ userName)
-----------SOME CODES HERE-----------------
putStr "ENTER 'Y' TO SAVE CHANGES AND EXIT: "
ex <- getChar
if ex /= 'Y' then
main
else do
writeFile fileName (show film')
exitWith ExitSuccess
main::IO()
main=do
putStr“输入用户名:”
用户名只读取一个字符。但是您按下了enter键,因此您还输入了一个换行符,当您递归调用main
时,第一个getLine
会读取该换行符
只需使用getLine
而不是getChar
,并检查它是否为/=“Y”
getChar
仅读取单个字符。但是您按下了enter键,因此您还输入了一个换行符,当您递归调用main
时,第一个getLine
会读取该换行符
只需使用getLine
而不是getChar
,并检查它是否为/=“Y”
在if语句之前打印两个字符串,那么为什么只打印第一个字符串呢?我希望提示会等到我输入用户名后再要求我输入文件名。当if条件为true时,它会在同一行上询问我用户名和文件名。我希望这是清楚的,您在if语句之前打印两个字符串,那么为什么您希望只打印第一个字符串呢?我希望提示会等到我输入用户名后再要求我输入文件名。当if条件为true时,它会在同一行上询问我用户名和文件名。我希望这是清楚的