我需要将命令行参数字符转换为整数。我想将每个变量分配给一个变量并在我的函数中使用它们。我有以下内容:
import System.Environment
getIntArg :: IO Int
getIntArg = fmap (read . head) getArgs
main = do
n <- getIntArg
print n
但是,它不会循环遍历所有参数,仅打印一个。另外,我会将每个变量分配给一个变量来使用吗?
我是 FP 新手。
最佳答案
如果您想将所有参数映射到您应该使用的Int
s
getIntArgs :: IO [Int]
getIntArgs = fmap (map read) $ getArgs
<小时/>
或更短一点:
getIntArgs = map read <$> getArgs
<小时/>
相反。
这样你就可以做到
main = do
ns <- getIntArgs
print ns
然后使用 (!!)
获取您感兴趣的内容,或者如果您知道/期望至少有固定数量的 Int
- 参数,则使用
(n1:n2:n3:_) <- getIntArgs
但是当然你应该首先检查长度 - 如果用户决定输入无法解析为 Int
s
因此,如果您不想重新发明轮子(如果您想学习或只需要快速解决方案,这可能没问题),您可能需要环顾四周并使用现有的包 - 例如 parseargs为您做这件事
关于haskell - 将命令行参数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339773/