【问题标题】:Generate command line strings using optparse-applicative使用 optparse-applicative 生成​​命令行字符串
【发布时间】:2018-12-31 10:28:55
【问题描述】:

给定Parser aa 类型的值是否可以生成相关的命令行(文本格式)? (基本上,与 optparse-applicative 的一般用途完全相反!)

例如,给定类似...

data Args = {userName :: Text, userGroups :: Text }

parser :: Parser Args
parser = Args
  <$> (strOption $ long "name")
  <*> (many $ strOption $ long "group")

...如何转换以下...

let args = Args { userName :: "testUser", userGroups :: ["system", "sudo"] }

...到...

--name=testUser --group=system --group=sudo

【问题讨论】:

  • 你能举一个“相关命令行”的例子吗?
  • @Li-yaoXia 我已经添加了一个例子。
  • 我明白了,这是一个有趣的想法,但使用 optparse-applicative 可能无法实现。如果幸运的话,您可能会得到几个样本,但您无法选择每个领域的内容。

标签: haskell optparse-applicative


【解决方案1】:

不,一般来说没有办法。相关位是:

data Parser a
  = forall x . MultP (Parser (x -> a)) (Parser x)
  | forall x . BindP (Parser x) (x -> Parser a)
  | -- ...

由于MultPBindPxs 是存在量化的,因此可用于生成a 的合适xs 的信息会在运行时丢失。

【讨论】:

  • (我从here抄袭了大部分答案。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多