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

Ful*_*Fan 3 haskell

我试图使用命令行运行我的程序.我试图返回我的命令行参数:

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  
Run Code Online (Sandbox Code Playgroud)

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

main argument arguments "more arguements"
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个编译器错误:

<interactive>:33:6: Not in scope: ‘argument’
<interactive>:33:15: Not in scope: ‘arguments’
Run Code Online (Sandbox Code Playgroud)

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

Zet*_*eta 9

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

但是,如果使用:main,GHC将以main与调用期间调用相同的方式使用runhaskell,例如,将以下参数解释为命令行参数.

另外,您也可以使用withArgs从System.Environment:

ghci> withArgs ["argument", "arguments", "more arguments"] main
Run Code Online (Sandbox Code Playgroud)