Haskell,optparse-generic 中未标记命令行参数的文档

Haskell, documentation for unlabeled command line arguments in optparse-generic

我正在使用 optparse-generic 来解析名为 example 的程序的命令行参数。我有一个带有未命名字段的数据类型。例如:

data Unlabeled = Unlabeled String deriving (Generic, Show)

这将生成一个可以按如下方式调用的程序:./exmaple "foo"。但是,对于用户而言,没有关于 String 参数的文档。特别是,./example --help 没有提供关于 String 参数 ./example 期望的任何有价值的信息。

使用命名数据类型(记录语法),可以向数据类型添加文档。例如

data Labeled = Labeled {name :: String <?> "Select the foo"} deriving (Generic, Show)

这会生成程序的帮助文本。比如调用./example --help,就会显示--name STRING Select the foo.

如何以与记录语法数据类型相同的方式向未命名数据类型添加文档?

数据Labeled = Labeled (String <?> "Select the foo")会给你

...
STRING     Select the foo
... 

--help 消息中。也许需要澄清的是, <?> 只是一个类型构造函数,它在语法上只是一个运算符。也许有趣的事实:你也可以写 data X = X (Int `Either` Bool)