Haskell命令行参数处理库
我已经使用参数处理一段时间了,它很棒。但是,我看不到一个带有单连字符的长选项名称功能,例如Haskell命令行参数处理库,haskell,command-line-arguments,Haskell,Command Line Arguments,我已经使用参数处理一段时间了,它很棒。但是,我看不到一个带有单连字符的长选项名称功能,例如-option1-option2或更难的-optx,它相当于--opt=x。我需要保持与现有应用程序的兼容性,因此这些格式都是必需的 System.Console.Getopt似乎也无法胜任。任何人都可以提供一个如何使用cmdargs执行此操作的示例,或者建议一个支持此操作的替代库吗?您可以做的最简单的事情可能是自己快速完成预处理过程。例如,如果您需要准确地支持三个选项-option1、-option2和-
-option1-option2
或更难的-optx
,它相当于--opt=x
。我需要保持与现有应用程序的兼容性,因此这些格式都是必需的
System.Console.Getopt似乎也无法胜任。任何人都可以提供一个如何使用cmdargs执行此操作的示例,或者建议一个支持此操作的替代库吗?您可以做的最简单的事情可能是自己快速完成预处理过程。例如,如果您需要准确地支持三个选项
-option1
、-option2
和-opttx
,类似的功能应该可以工作:
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
munge“-option1”=“--option1”
芒格“-option2”=“--option2”
munge s |“-opt”`isPrefixOf`s=“--opt=“++下降4秒
芒奇s=s
main=do
realArgs GNU约定长选项为两个破折号。我认为,像getopt这样的库的设计目的是一致地执行这个约定。如果我是你,我会尝试直接使用getArgs并编写自己的非标准选项处理函数(ImageMagick样式或其他任何样式)。@jetxee-我可以这样做,但我必须编写自己的帮助消息。至少为此解析getArgs会相对简单。奇怪的是,它是一个gnu可执行文件,我需要与之兼容。