我试图使用命令行运行我的程序.我试图返回我的命令行参数:
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)
我是如何用我的论点调用我的函数的?
: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)