使用命令行参数运行我的程序

时间:2015-10-26 06:17:06

标签: haskell

我正在尝试使用命令行运行我的程序。我试图返回我的命令行参数:

-avioflags direct

我通过使用我的参数调用main函数来执行代码:

import System.Environment   
import Data.List  

main :: IO()

main = do  
   args <- getArgs  
   progName <- getProgName  
   putStrLn "The arguments are:"  
   mapM putStrLn args  
   putStrLn "The program name is:"  
   putStrLn progName  

但是,我收到了编译错误:

main argument arguments "more arguements"

我是如何用我的论点调用我的函数的?

1 个答案:

答案 0 :(得分:9)

如果要模拟命令行参数,则必须使用:main。仅main仅执行您的IO ()操作,但实际上并不构建参数。对于GHCi知道的所有内容,main不一定需要IO (),它可以是Int -> Int -> IO ()

但是,如果您使用:main,则GHC将使用main,其方式与runhaskell来电时调用的方式相同,例如将以下参数解释为命令行参数。

或者,您可以使用withArgs中的System.Environment

ghci> withArgs ["argument", "arguments", "more arguments"] main