使用optparse-applicative可以轻松指定互斥选项:
data Exclusive = E1 | E2
exclusiveParser :: Parser ExclusiveOption
exclusiveParser =
(flag' E1 (short 'e1')
<|> (flag' E2 (short 'e2')
Run Code Online (Sandbox Code Playgroud)
上面的解析器将解析-e1或者-e2,但不能解析两者.当提供-e1和-e2提供时,默认的optparse-applicative操作是打印应用程序的使用消息.我想提供一个特定的错误消息,告知他们不能同时提供用户-e1和-e2,但我没有看到一个明显的方式来做到这一点.
任何建议(或解决方案)将不胜感激?