我有使用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))
问题与许多组合器的使用有关,因为一旦我将其删除,代码运行正常。
这是一个错误还是我做错了什么?
谢谢!
答案 0 :(得分:5)
我认为,这里的问题是默认值。只需从解析器修饰符中删除value 1
。
来自value
上的文档:
注意:因为此修饰符意味着解析器永远不会失败,所以不要将它与组合器(例如某些组合器或许多组合器)一起使用,因为这些组合器会一直持续到发生故障。因此,不小心使用会导致挂起。