在Haskell中,是否可以将用户输入从一个IO功能共享到另一个?
例如,如果我有:
main = do
putStrLn "Give me a number!"
my_stuff <- getLine
let nump = read (my_stuff)::Int
another_function nump
其中another_function也是具有do
构造的IO函数。
another_function nump = do
putStrLn nump
putStrLn "Try again!"
main
这个会在我脑海中的幻想世界Haskell解释器中有意义。但是,在现实世界中:my_stuff在another_function中未绑定;而在main中,my_stuff需要是IO t类型,但事实并非如此。
上面的代码(很可能)对Haskellers非常冒犯,但我希望它能够传达出我的目标......
我该如何解决这个问题?
答案 0 :(得分:5)
此代码有效。这是你想要做的吗?如果没有,你能提供不起作用的代码吗?
main = do
putStrLn "Give me a number!"
my_stuff <- getLine
let nump = read (my_stuff)::Int
another_function nump
another_function nump = do
putStrLn $ show nump
putStrLn "Try again!"
main