理解`getArgs`

时间:2014-07-03 00:39:13

标签: haskell

我希望以下GetArgs.hs打印出传递给它的参数。

import System.Environment

main = do
    args <- getArgs
    print args

但是,在ghci中加载后,我收到以下错误:

ghci> main 3 4 3

<interactive>:39:1:
    Couldn't match expected type `a0 -> a1 -> a2 -> t0'
                with actual type `IO ()'
    The function `main' is applied to three arguments,
    but its type `IO ()' has none
    In the expression: main 3 4 3
    In an equation for `it': it = main 3 4 3

由于print具有以下类型:

ghci的&GT; :t打印 print ::显示a =&gt; a - &gt; IO()

我希望print args能够工作。

为什么不呢?

2 个答案:

答案 0 :(得分:11)

print args运行正常。什么行不通的是main 3 4 3main没有任何争论,但你试图用三个来称呼它。

如果要模拟使用ghci中的命令行参数调用程序,可以使用:main命令(前面带冒号)。或者,您可以编译程序并使用给定参数从命令行实际运行它。

答案 1 :(得分:11)

在ghci中使用run命令

  

:run main 3 4 3