Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell命令行参数处理库_Haskell_Command Line Arguments - Fatal编程技术网

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可执行文件,我需要与之兼容。