Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Haskell进行简单的退出?_Haskell - Fatal编程技术网

如何在Haskell进行简单的退出?

如何在Haskell进行简单的退出?,haskell,Haskell,代码如下: main :: IO() main = do { putStrLn ("Meniu: "); putStrLn ("1. menu 1"); putStrLn ("2. menu 2"); putStrLn ("3. menu 3"); putStrLn ("4. menu 4"); putStrLn ("5. Exit - Iesire)"); putS

代码如下:

main :: IO()
main =  do 
{
         putStrLn ("Meniu: ");
         putStrLn ("1. menu 1");
         putStrLn ("2. menu 2");
         putStrLn ("3. menu 3");
         putStrLn ("4. menu 4");
         putStrLn ("5. Exit - Iesire)");
         putStrLn ("-------------------------");
         putStr ("Enter option: ");
         opt <- getLine;
         if(opt == "1") then do
         {
            Code one etc
            main
         }
            else if(opt == "2") then do
         {
            Code 2 etc
            main
         }
            else if(opt == "3") then do
         {
            code 3 etc
            main
         }
         else if(opt == "4") then do
         {
            code 4 etc
            main

         }
         else if(opt == "5") then do
         {
            ??????????? ()
         }
         else putStrLn "Option is not exist";
}
main::IO()
main=do
{
putStrLn(“Meniu:”);
putStrLn(“1.菜单1”);
putStrLn(“2.菜单2”);
putStrLn(“3.菜单3”);
putStrLn(“4.菜单4”);
putStrLn(“5.出口-Iesire”);
putStrLn(“---------------------------”);
putStr(“输入选项:”);
opt
return()
将在这里工作。在这种情况下,
return
的行为实际上与过程语言中的行为类似(但请注意,这通常不是真的)

关于样式的注意事项:带有相等比较的
if
else
链在Haskell中非常不习惯。正确的方法是使用
case

main =  do 
     putStrLn "Meniu: "
     sequence_ [ putStrLn $ [n]++". menu "++[n] | n<-['1'..'5'] ]
     putStrLn "-------------------------"
     putStr "Enter option: "

     opt <- getLine
     case opt of
      "1" -> do
        Code one etc
        main
      "2" -> do
        Code 2 etc
        main
      "3" -> do
        code 3 etc
        main
      "4" -> do
        code 4 etc
        main
      "5" -> return ()
      _ -> putStrLn "Option does not exist"
main=do
putStrLn“Meniu:”
顺序$[n]+>。菜单“+[n]| n do
代码2等
主要的
“3”->做什么
代码3等
主要的
“4”->做什么
代码4等
主要的
“5”->返回()
_->putStrLn“选项不存在”
如果代码缩进正确,则不需要大括号和分号

return()
在这里所做的只是……什么都没有,它是不可操作的。因为
main
case
开关后结束,如果您不像在其他选项中那样递归回到
main
,程序也将结束。

return()
将在这里工作。在这种情况下,
return
的行为实际上与过程语言中的行为类似(但请注意,这通常不是真的)

关于样式的注意事项:带有相等比较的
if
else
链在Haskell中非常不习惯。正确的方法是使用
case

main =  do 
     putStrLn "Meniu: "
     sequence_ [ putStrLn $ [n]++". menu "++[n] | n<-['1'..'5'] ]
     putStrLn "-------------------------"
     putStr "Enter option: "

     opt <- getLine
     case opt of
      "1" -> do
        Code one etc
        main
      "2" -> do
        Code 2 etc
        main
      "3" -> do
        code 3 etc
        main
      "4" -> do
        code 4 etc
        main
      "5" -> return ()
      _ -> putStrLn "Option does not exist"
main=do
putStrLn“Meniu:”
顺序$[n]+>。菜单“+[n]| n do
代码2等
主要的
“3”->做什么
代码3等
主要的
“4”->做什么
代码4等
主要的
“5”->返回()
_->putStrLn“选项不存在”
如果代码缩进正确,则不需要大括号和分号

什么
返回()
在这里做的只是…什么都没有,它是不可操作的。因为
main
case
开关后结束,如果你没有像在其他选项中那样递归回到
main
,程序也会结束。

你正在寻找,但我建议你切换到普通库进行opts解析,就像你正在寻找的那样我建议您切换到普通库进行opts解析,如