如何在Haskell的optparse-applicative中使用具有多个值的选项

vid*_*idi 1 haskell optparse-applicative

我有使用optparse-applicative的以下Haskell代码,它在运行时挂起.

main :: IO ()
main = do
  printf "Start...\n"
  args <- execParser $ info args fullDesc
  printf "Cmdline args: %s\n" (show args)

args :: Parser [Integer]
args = many (option auto
         (short 'x'
           <> value 1))
Run Code Online (Sandbox Code Playgroud)

问题与使用许多组合器有关,因为一旦我删除它,代码运行正常.

这是一个错误还是我做错了什么?

谢谢!

fre*_*yle 5

我认为,这里的问题是默认值.只需value 1从解析器修改器中删除即可.

来自以下文档value:

注意:因为此修饰符意味着解析器永远不会失败,所以不要将它与组合器(如某些组合器或许多组合器)一起使用,因为这些组合器会一直持续到发生故障.因此,不小心使用会导致挂起.