Haskell:继续执行程序

Haskell:继续执行程序,haskell,flow,Haskell,Flow,我对哈斯克尔很陌生。我的问题对你来说可能很基本。我来了- 我正在编写一个程序,用一个特定的数学公式创建一系列数字。在创建这个系列之后,我应该对它执行一些操作,比如从这些数字中找出最大值/最小值 我可以编写程序,但是在从用户那里得到一个输入后,我的程序显示输出,然后退出。如果我必须等待来自用户的更多命令并在命令端退出,我该怎么办 line <- getLine line基本输入循环: loop = do putStr "Enter a command: " input <-

我对哈斯克尔很陌生。我的问题对你来说可能很基本。我来了-

我正在编写一个程序,用一个特定的数学公式创建一系列数字。在创建这个系列之后,我应该对它执行一些操作,比如从这些数字中找出最大值/最小值

我可以编写程序,但是在从用户那里得到一个输入后,我的程序显示输出,然后退出。如果我必须等待来自用户的更多命令并在命令端退出,我该怎么办

line <- getLine
line基本输入循环:

loop = do
  putStr "Enter a command: "
  input <- getLine
  let ws = words input -- split into words
  case ws of
    ("end":_)       -> return ()
    ("add":xs:ys:_) -> do let x = read xs :: Int
                              y = read ys
                          print $ x + y
                          loop
    ... other commands ...
    _ -> do putStrLn "command not understood"; loop


main = loop
loop=do
putStr“输入命令:”
输入返回()
(“add”:xs:ys:))->让x=read xs::Int
y=读取y
打印$x+y
环
... 其他命令。。。
_->不执行putStrLn“未理解命令”;环
主=回路

请注意每个命令处理程序如何再次调用
循环
,以重新启动循环。“end”处理程序调用
return()
退出循环。

前奏。为此,请进行交互:

calculate :: String -> String
calculate input =
  let ws = words input
  in  case ws of
        ["add", xs, ys] -> show $ (read xs) + (read ys)
        _ -> "Invalid command"

main :: IO ()
main = interact calculate
interact::(String->String)->IO()interact函数将String->String类型的函数作为其参数。来自标准输入设备的整个输入作为其参数传递到此函数,并在标准输出设备上输出结果字符串