Haskell IO共享参数

时间:2011-10-25 08:50:13

标签: haskell syntax io

在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非常冒犯,但我希望它能够传达出我的目标......

我该如何解决这个问题?

1 个答案:

答案 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