2014-03-03 79 views
0

如何从haskell中的用户获取多个参数?从用户获取多个参数

module Main where 
main :: IO() 
main = do 
     putStrLn "Please enter param1: " 
     param1 <- getLine 
     putStrLn "Please enter param2: " 
     param2 <- getLine 
     putStrLn $ "you entered" ++ param1 ++ "param 2:" ++ param2 

我使用http://www.compileonline.com/compile_haskell_online.php以params为食。

我不确定程序是错的还是STDINPUT不好。

有人可以指导我在这里。

我得到这个是这样的:

请输入参数1:请输入参数2:演示:是不是连打印文件

输出的 结束:hGetLine。

STDIN Input: 123 231 
+0

你在解释器中运行这个吗?你应该编译它,如果你不是那么试一试。 –

+0

@ ThomasM.DuBuisson我正在使用compileonline.com,我没有问题编译只是输出为空的所有时间 – rao

+0

它看起来像你正在添加'haskell平台'和'真实世界 - haskell'标签你所有的问题。请勿添加不适用的标签 - 例如根本没有任何问题使用任何库,因此显然不是平台特定的。 –

回答

1

看起来输入是1行,而您期望2行。可以将输入放在两行上或将您的代码更改为

module Main where 
main :: IO() 
main = do 
    line <- getLine 
    let 
     params = words line 
     param1 = params !! 0 
     param2 = params !! 1 
    putStrLn $ "you entered" ++ param1 ++ "param 2:" ++ param2 

这需要stdin的单行并将其按空格拆分。

+0

该死的每天都有新东西 – rao

2

您的compileonline.com网站不支持多行stdin。如果你删除第二个getLineparam2你的程序工作。

您看到的错误与stdin在第二个getLine完成之前关闭有关。

任何描述“Haskel”的网站可能都不是一个好的网站。