从用户那里获得多个参数

时间:2014-03-03 20:23:01

标签: haskell

如何从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来提供参数。

我不确定程序是否错误或STDINPUT是否正常。

有人可以在这里指导我。

我得到的就是这个:

  

请输入param1:请输入param2:demo :: hGetLine:   文件结尾

甚至没有打印输出。

STDIN Input: 123 231

2 个答案:

答案 0 :(得分:2)

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

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

任何拼写它'Haskel'的网站可能不是一个好网站。

答案 1 :(得分: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并按空格分割。