Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell IO共享参数_Haskell_Syntax_Io - Fatal编程技术网

Haskell IO共享参数

Haskell IO共享参数,haskell,syntax,io,Haskell,Syntax,Io,在Haskell中,是否可以将用户输入从一个IO函数共享到另一个IO函数 例如,如果我有: main = do putStrLn "Give me a number!" my_stuff <- getLine let nump = read (my_stuff)::Int another_function nump 这在我脑海中的哈斯凯尔解释器的幻想世界中是有意义的。然而,在现实世界中:我的东西在另一个函数中没

在Haskell中,是否可以将用户输入从一个IO函数共享到另一个IO函数

例如,如果我有:

  main = do
         putStrLn "Give me a number!"
         my_stuff <- getLine 
         let nump = read (my_stuff)::Int
         another_function nump
这在我脑海中的哈斯凯尔解释器的幻想世界中是有意义的。然而,在现实世界中:我的东西在另一个函数中没有绑定;总的来说,我的东西需要是IO t类型,但不是

上面的代码(很可能)会非常冒犯Haskellers,但我希望它传达了我的目标


我如何解决这个问题

此代码有效。这就是你想做的吗?如果没有,你能提供不起作用的代码吗

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
main=do
putStrLn“给我一个号码!”

我的东西这个代码有效。这就是你想做的吗?如果没有,你能提供不起作用的代码吗

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
main=do
putStrLn“给我一个号码!”

我的东西另一个函数的类型将非常有用。或者,如果您不确定类型,至少显示它的实现。它应该是沿着
[String]->IO something
,从错误消息看,似乎是你让它接受了一个
IO
参数。@delnan哦,我还没有真正写出另一个函数。我写的都是我的东西,我的东西应该是一个字符串。我想看看你是否能做“参数传递”。
s@delnan我想你可能误解了这个问题。所以我决定澄清一下。看看你是否还有兴趣帮忙:)嗯,我想帮忙。但是您现在发布的代码仍然可以,忽略您必须使用
show
nump
转换回
putStrLn
的字符串,因为它是
Int
(这与您描述的错误不符)。我担心我们将不得不引入大人物-请复制并粘贴您的确切代码以及您如何编译/运行它。查看
的类型另一个功能将非常有用。或者,如果您不确定类型,至少显示它的实现。它应该是沿着
[String]->IO something
,从错误消息看,似乎是你让它接受了一个
IO
参数。@delnan哦,我还没有真正写出另一个函数。我写的都是我的东西,我的东西应该是一个字符串。我想看看你是否能做“参数传递”。
s@delnan我想你可能误解了这个问题。所以我决定澄清一下。看看你是否还有兴趣帮忙:)嗯,我想帮忙。但是您现在发布的代码仍然可以,忽略您必须使用
show
nump
转换回
putStrLn
的字符串,因为它是
Int
(这与您描述的错误不符)。我担心我们将不得不引入大人物-请复制并粘贴您的确切代码以及您如何编译/运行它。请看与原始问题不太相关的内容,但我可能会重写
阅读(我的东西)::Int
,因为帕伦夫妇实际上什么都不做。无论是作为
(读我的东西)::Int
还是仅仅是
读我的东西::Int
。与原来的问题不太相关,但我可能会重写
读(我的东西)::Int
,因为父母实际上什么都不做。要么作为
(读我的东西)::Int
,要么只是
读我的东西::Int