使用cmdargs
时,如果缺少一个强制参数,是否有一种方便的方法可以打印错误消息并退出?例如,现在我有这样的代码:
foo = Foo{script = def &= args &= typ "SCRIPT"}
main = do
scriptName <- script <$> cmdArgs foo
-- ...
如果我运行这个程序并且不传递SCRIPT
参数,scriptName
就是一个空字符串,我真的需要手动检查并使用Control.Monad.Except
之类的东西来处理吗?
1条答案
按热度按时间thtygnil1#
部分的,因此有点不满意的解决办法。
这只是部分解决方案,因为参数特定的帮助丢失。使用
--help
:不传递必需参数时:
--script
和--thing
的帮助信息丢失的原因可能是CmdArgs.cmdArgsPrivate
未初始化,这也会导致编译器警告。或者可能与doco中的此警告有关使用注解创建的值不是纯值-第一次计算时,它们将包含注解,但随后将不包含注解。
发布一个部分答案是一种耻辱,我用另一种方法解决了我的问题,但由于这个问题已经几年没有答案了,也许其他人可以改进这个问题。