1

タイプのParser aと の値を指定するとa、関連するコマンドラインを (テキスト形式で) 生成できますか? (基本的に、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
4

1 に答える 1

1

いいえ、一般的には仕方がありません。関連するビットは次のとおりです。

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

xと のは存在量MultP化されているため、 を生成するために使用できるBindP適切な に関する情報は実行時に失われます。xa

于 2018-12-31T16:28:53.430 に答える