Jam*_*d.. 2 io haskell arguments
我想getArgs在Haskell中了解。这是我所拥有的:
import System.Environment
myFunFunction = do
args <- getArgs
return $ head args
Run Code Online (Sandbox Code Playgroud)
运行该函数时得到的是
*Main> myFunFunction
*** Exception: Prelude.head: empty list
Run Code Online (Sandbox Code Playgroud)
这是否与以下方式不同getLine?为什么不要求命令行参数?
的类型getArgs是IO [String]。当与<-OP 绑定时,如在OP中一样,绑定的符号(args)获得类型[String],即字符串列表。
该head函数返回列表中的第一个元素;它具有类型[a] -> a。它因不安全而闻名,从某种意义上讲,如果将其应用于空列表,它将崩溃:
Prelude System.Environment> head []
*** Exception: Prelude.head: empty list
Run Code Online (Sandbox Code Playgroud)
这就是这里发生的事情。getArgs为您提供您在运行程序时在命令行中提供的参数。如果您在命令行中未提供任何参数,则返回的列表将为空。
该getArgs功能不是交互式的。如果提供了任何参数,它将仅返回从命令行提供的参数。