Haskell:单个案例中的多个操作
Haskell: Multiple Actions in Single Case
我正在尝试在 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 所有 return IO [String] 的值,我试图让 return 基于 [String] 而不是 IO [String]。
理想情况下,我想为每种情况尝试这样的事情,但我不确定如何去做:
db2 <- (inputOne db)
return (db2)
我尝试按照以下方式进行实验:
|input == 1 = {db2 <- (inputOne db)
return (db2)}
但是,即使我认为这是正确的,这也会出错并且不起作用。
如有任何帮助,我们将不胜感激。
如果你想要一个 do 块,你需要实际的 do
关键字:
| input == 1 = do db2 <- inputOne db; return db2
你也可以像这样构造它
| input == 1 = do
db2 <- inputOut db
return db2
如果你愿意。
注意将结果放入变量并立即返回相同的东西与
相同
| input == 1 = inputOne db
我正在尝试在 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 所有 return IO [String] 的值,我试图让 return 基于 [String] 而不是 IO [String]。 理想情况下,我想为每种情况尝试这样的事情,但我不确定如何去做:
db2 <- (inputOne db)
return (db2)
我尝试按照以下方式进行实验:
|input == 1 = {db2 <- (inputOne db)
return (db2)}
但是,即使我认为这是正确的,这也会出错并且不起作用。
如有任何帮助,我们将不胜感激。
如果你想要一个 do 块,你需要实际的 do
关键字:
| input == 1 = do db2 <- inputOne db; return db2
你也可以像这样构造它
| input == 1 = do
db2 <- inputOut db
return db2
如果你愿意。
注意将结果放入变量并立即返回相同的东西与
相同| input == 1 = inputOne db