我试图让Haskell中的IO函数向IO发送一个变量,以便在程序的主程序中使用。下面的具体部分是让我悲伤的主要部分。
getInformation :: Int -> [String] -> IO [String]
getInformation input db
|input == 1 = return (inputOne db)
|input == 2 = return (inputTwo db)
|input == 3 = return (inputThree db)
|input == 4 = return (inputFour db)
|input == 5 = return (inputFive db)
|input == 6 = return (inputSix db)
|input == 7 = return (inputSeven db)
|input == 8 = return (inputEight db)
inputOne ... inputEight all返回IO [String]的值,我试图让返回基于[String]而不是IO [String]。 理想情况下,我想为每个案例尝试这样的事情,但我不确定如何解决这个问题:
db2 <- (inputOne db)
return (db2)
我试过按照以下方式进行实验:
|input == 1 = {db2 <- (inputOne db)
return (db2)}
然而,即使我认为这是正确的方向,这也会出错并且不起作用。
非常感谢任何帮助。
答案 0 :(得分:3)
如果你想要一个阻止,你需要实际的do
关键字:
| input == 1 = do db2 <- inputOne db; return db2
你也可以像
那样构建它| input == 1 = do
db2 <- inputOut db
return db2
如果您愿意。
请注意,将结果放入变量并立即返回相同的内容与
相同| input == 1 = inputOne db