将命令行参数分配给变量

Ful*_*Fan 3 haskell

我需要将命令行参数字符转换为Ints.我想将每个变量分配给变量并在我的函数中使用它们.我有以下内容:

import System.Environment   

getIntArg :: IO Int
getIntArg = fmap (read . head) getArgs

main = do
    n <- getIntArg
    print n
Run Code Online (Sandbox Code Playgroud)

但是,它不会遍历只打印一个的所有参数.另外,我会将每个分配给一个变量来使用吗?

我是FP的新手.

Car*_*ten 5

如果你想将所有参数映射到Int你应该使用的s

getIntArgs :: IO [Int]
getIntArgs = fmap (map read) $ getArgs
Run Code Online (Sandbox Code Playgroud)

或者更短一些:

getIntArgs = map read <$> getArgs
Run Code Online (Sandbox Code Playgroud)

代替.

这样你就可以做到

main = do
    ns <- getIntArgs
    print ns
Run Code Online (Sandbox Code Playgroud)

然后得到你感兴趣的那些,(!!)或者如果你知道/期望至少有一定数量的Int- 参数

(n1:n2:n3:_) <- getIntArgs
Run Code Online (Sandbox Code Playgroud)

但是你当然应该首先检查长度 - 如果用户决定输入无法解析为Ints的东西,这也会失败


因此,如果您不想重新发明轮子(如果您想要学习或者只需要快速解决方案可能没问题),您可能希望环顾四周并使用现有的包 - 例如parseargs为您执行此操作