3

我有以下使用 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))

问题与许多组合器的使用有关,因为一旦我删除它,代码运行良好。

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

谢谢!

4

1 回答 1

5

我认为,这里的问题在于默认值。只需value 1从解析器修饰符中删除。

从文档开始value

注意:因为这个修饰符意味着解析器永远不会失败,所以不要将它与诸如 some 或 many 之类的组合器一起使用,因为这些组合器会一直持续到发生故障为止。粗心的使用将因此导致挂起。

于 2017-10-03T13:08:05.800 回答