Haskell 将命令行参数指定给变量
我需要将命令行参数字符转换为int。我想把每一个都分配给一个变量,并在函数中使用它们。我有以下资料: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
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