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类型的函数作为其参数。来自标准输入设备的整个输入作为其参数传递到此函数,并在标准输出设备上输出结果字符串