我正在尝试使用命令行运行我的程序。我试图返回我的命令行参数:
-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"
我是如何用我的论点调用我的函数的?
答案 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