Haskell 将命令行参数指定给变量

Haskell 将命令行参数指定给变量,haskell,Haskell,我需要将命令行参数字符转换为int。我想把每一个都分配给一个变量,并在函数中使用它们。我有以下资料: import System.Environment getIntArg :: IO Int getIntArg = fmap (read . head) getArgs main = do n <- getIntArg print n 导入系统环境 getIntArg::IO Int getIntArg=fmap(read.head)getArgs main=d

我需要将命令行参数字符转换为int。我想把每一个都分配给一个变量,并在函数中使用它们。我有以下资料:

import System.Environment   

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

main = do
    n <- getIntArg
    print n
导入系统环境
getIntArg::IO Int
getIntArg=fmap(read.head)getArgs
main=do

n如果要将所有参数映射到
Int
s,则应使用

getIntArgs :: IO [Int]
getIntArgs = fmap (map read) $ getArgs

或者再短一点:

getIntArgs = map read <$> getArgs
但是当然,您应该首先检查长度,如果用户决定输入无法解析为
Int
s的内容,这也会失败



因此,如果您不想重新发明轮子(如果您想学习或只需要快速解决方案,这可能没问题),您可能需要环顾四周并使用现有的软件包-例如,为您这样做

为什么
;)(这就是为什么你只得到第一个)只是一个小小的评论:只要Ubuntu 14.04和大学或类似地方使用的其他LTS平台仍然使用GHC 7.6.3,我会在
中添加
导入控制.Applicative
(或者使用
地图读取'fmap`getArgs
).我根本不会使用操作系统软件包-但我想这是另一个讨论-但是的,这可能会是一个问题(不像OP看起来那样)
main = do
    ns <- getIntArgs
    print ns
(n1:n2:n3:_) <- getIntArgs