Haskell命令行参数处理库

时间:2011-04-15 15:56:57

标签: haskell command-line-arguments

我一直在使用cmdargs进行参数处理,这很棒。但是,我没有看到带有单个连字符的长选项名称的工具,例如-option1 -option2或更难-optx,相当于--opt=x。我需要保持与现有应用程序的兼容性,因此这些格式都是必需的。

System.Console.Getopt似乎也没有。任何人都可以提供如何使用cmdargs执行此操作的示例,或者建议一个支持此功能的替代库吗?

1 个答案:

答案 0 :(得分:9)

你可以做的最简单的事情就是自己做一个快速的预处理过程。例如,如果您需要准确支持三个选项-option1-option2-optx,那么这样的事情应该有效:

munge "-option1" = "--option1"
munge "-option2" = "--option2"
munge s | "-opt" `isPrefixOf` s = "--opt=" ++ drop 4 s
munge s = s

main = do
    realArgs <- getArgs
    withArgs (map munge realArgs) mainThatUsesCmdArgs

正如你所说的那样,帮助信息将不再提及拥有这些简短形式的可能性。 (但这可能是件好事。)

如果你想要更多,你可能必须说服某人修改cmdargs。